当用户将浏览器窗口滚动到某个点以下时,我将切换#page div的类。
我到目前为止工作正常:
<div ng-app="myApp" scroll id="page"> <header></header> <section></section> </div> app = angular.module('myApp',[]); app.directive("scroll",function ($window) { return function(scope,element,attrs) { angular.element($window).bind("scroll",function() { if (this.pageYOffset >= 100) { element.addClass('min'); console.log('Scrolled below header.'); } else { element.removeClass('min'); console.log('Header is in view.'); } }); }; });
(当他们滚动窗口下面的标题,100px,类是切换)
虽然,纠正我,如果我错了,我觉得这不是正确的方法,这样做与Angular。
相反,我推测,最好的方法是使用ng-class并在范围内存储一个布尔值。这样的东西:
<div ng-app="myApp" scroll id="page" ng-class="{min: boolChangeClass}"> <header></header> <section></section> </div> app = angular.module('myApp',function() { if (this.pageYOffset >= 100) { scope.boolChangeClass = true; console.log('Scrolled below header.'); } else { scope.boolChangeClass = false; console.log('Header is in view.'); } }); }; });
虽然这不是动态的,如果我在scroll回调中更改scope.boolChangeClass的值,那么ng-class不会更新。
所以我的问题是:当用户滚动到某个点以下时,如何最好切换#page的类,使用AngularJS?
感谢Flek在他的评论中回答我的问题:
原文链接:https://www.f2er.com/angularjs/146604.html<div ng-app="myApp" scroll id="page" ng-class="{min:boolChangeClass}"> <header></header> <section></section> </div> app = angular.module('myApp',function() { if (this.pageYOffset >= 100) { scope.boolChangeClass = true; } else { scope.boolChangeClass = false; } scope.$apply(); }); }; });