如何在滚动页面时隐藏元素?

Mic*_*ell 32 scroll angularjs

好吧,我有点难过.

我试图想象来自jQuery背景的角度方式.

问题:如果窗口没有滚动,我只想隐藏一个固定的元素.如果有人向下滚动页面我想隐藏元素.

我已经尝试创建一个自定义指令,但我不能让它工作,因为滚动事件没有触发.我正在考虑一个像下面这样的简单控制器,但它甚至都没有运行.

控制器:

.controller('MyCtrl2', function($scope,appLoading, $location, $anchorScroll, $window ) {
   angular.element($window).bind("scroll", function(e) {
       console.log('scroll')
       console.log(e.pageYOffset)
       $scope.visible = false;
   })
})
Run Code Online (Sandbox Code Playgroud)

视图

<a ng-click="gotoTop()" class="scrollTop" ng-show="{{visible}}">TOP</a>
Run Code Online (Sandbox Code Playgroud)

现场预览 http://www.thewinetradition.com.au/new/#/portfolio

任何想法将不胜感激.

edd*_*iec 70

基本指令看起来像这样.一个关键点是你需要调用,scope.$apply()因为滚动将在正常digest周期之外运行.

app = angular.module('myApp', []);
app.directive("scroll", function ($window) {
    return function(scope, element, attrs) {
        angular.element($window).bind("scroll", function() {
            scope.visible = false;
            scope.$apply();
        });
    };
});
Run Code Online (Sandbox Code Playgroud)

我发现这个jsfiddle很好地演示了它http://jsfiddle.net/88TzF/

  • 你怎么得到`$(window).scrollTop()` (9认同)
  • 当指令被销毁时,这会自动取消绑定事件吗? (6认同)