首页 > web前端 > css教程 > AngularJS $watch 如何替代动态导航高度调整中的计时器?

AngularJS $watch 如何替代动态导航高度调整中的计时器?

Barbara Streisand
发布: 2024-11-02 11:06:30
原创
507 人浏览过

How Can AngularJS $watch Replace Timers in Dynamic Navigation Height Adjustment?

避免 AngularJS 的高度监视计时器

当导航高度是动态时,AngularJS 程序员经常面临响应式导航的挑战。这就导致需要根据导航高度的变化来调整内容的 margin-top 值。

以前,使用计时器来检测导航高度的变化,但这种方法有缺点:使用计时器和调整内容的 margin-top 时出现延迟。

幸运的是,存在更好的方法:利用 AngularJS 的 $watch 功能。在“emHeightSource”中注册了一个观察程序,而不是计时器,该观察程序在每个 $digest 周期期间被调用。观察者更新 '__height' 属性。

在 'emHeightTarget' 中,另一个观察者监视 '__height' 并相应更新 margin-top 值,确保内容的 margin-top 平滑变化并与导航同步高度。

这是使用观察者的精炼代码:

/*
 * Get notified when height changes and change margin-top
 */
.directive( 'emHeightTarget', function() {
    return {
        link: function( scope, elem, attrs ) {

            scope.$watch( '__height', function( newHeight, oldHeight ) {
                elem.attr( 'style', 'margin-top: ' + (58 + newHeight) + 'px' );
            } );
        }
    }
} )

/*
 * Checks every $digest for height changes
 */
.directive( 'emHeightSource', function() {

    return {
        link: function( scope, elem, attrs ) {

            scope.$watch( function() {
                scope.__height = elem.height();
            } );
        }
    }

} )
登录后复制

以上是AngularJS $watch 如何替代动态导航高度调整中的计时器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板