一尘不染

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

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;
   })
})

视图

<a ng-click="gotoTop()" class="scrollTop" ng-show="{{visible}}">TOP</a>

实时预览
http://www.thewinetradition.com.au/new/#/portfolio

任何想法将不胜感激。


阅读 364

收藏
2020-07-04

共1个答案

一尘不染

基本指令如下所示。一个关键点是您需要致电,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();
        });
    };
});

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

2020-07-04