Подтвердить что ты не робот

Изменение css при прокрутке Angular Стиль

Я хочу изменить элементы CSS, пока пользователь прокручивает путь angular.

здесь код, обрабатывающий путь JQuery

$(window).scroll(function() {
    if ($(window).scrollTop() > 20 && $(window).scrollTop() < 600) {
        $('header, h1, a, div, span, ul, li, nav').css('height','-=10px');
    } else if ($(window).scrollTop() < 80) {
        $('header, h1, a, div, span, ul, li, nav').css('height','100px');
    }

Я попробовал сделать angular способ со следующим кодом, но $scope.scroll, казалось, не смог правильно загрузить данные прокрутки.

forestboneApp.controller('MainCtrl', function($scope, $document) {
    $scope.scroll = $($document).scroll();
    $scope.$watch('scroll', function (newValue) {
        console.log(newValue);
    });
});

Muchos gracias amigos!

4b9b3361

Ответ 1

Помните, что в Angular доступ DOM должен происходить изнутри директив. Здесь простая директива, которая устанавливает переменную, основанную на scrollTop окна.

app.directive('scrollPosition', function($window) {
  return {
    scope: {
      scroll: '=scrollPosition'
    },
    link: function(scope, element, attrs) {
      var windowEl = angular.element($window);
      var handler = function() {
        scope.scroll = windowEl.scrollTop();
      }
      windowEl.on('scroll', scope.$apply.bind(scope, handler));
      handler();
    }
  };
});

Мне не совсем понятно, какой конечный результат вы ищете, поэтому здесь простое демонстрационное приложение, которое устанавливает высоту элемента в 1px, если окно прокручивается более чем на 50 пикселей: http://jsfiddle.net/BinaryMuse/Z4VqP/