加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 绑定类切换到窗口滚动事件

发布时间:2020-12-17 09:02:00 所属栏目:安全 来源:网络整理
导读:当用户将浏览器窗口滚动到某个点以下时,我将切换#page div的类。 我到目前为止工作正常: http://jsfiddle.net/eTTZj/29/ div ng-app="myApp" scroll id="page" header/header section/section/divapp = angular.module('myApp',[]);app.directive("scroll"
当用户将浏览器窗口滚动到某个点以下时,我将切换#page div的类。

我到目前为止工作正常:

http://jsfiddle.net/eTTZj/29/

<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在他的评论中回答我的问题:

http://jsfiddle.net/eTTZj/30/

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读