好吧,我有些困惑。
我试图考虑来自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
任何想法将不胜感激。
基本指令如下所示。一个关键点是您需要致电,scope.$apply()因为滚动将在正常digest周期之外运行。
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/