AngularJS:一种更有效的高度变化监控方法
在可变高度导航的情况下,刚性定位的导航栏位于顶部内容的 margin-top 源自导航高度,异步数据加载会导致导航高度发生变化,需要调整内容边距。
之前使用基于计时器的方法来解决此问题。然而,这种方法带来了与美观和延迟相关的潜在缺点。 AngularJS 有没有更有效的方法来监控高度变化?
是的,有。通过利用 AngularJS 中的监视功能,可以设计一种解决方案,提供增强的响应能力并消除对计时器的需求。这是通过在每个 $digest 周期触发的 emHeightSource 指令中注册一个监视来实现的。
在监视内,__height 属性会更新。然后,此属性由 emHeightTarget 指令中的另一个监视进行监视。当 __height 属性发生变化时,目标元素的 margin-top 也会相应调整。
使用 watch 的改进实现:
/* * 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(); } ); } } } )
这种方法提供了一个 self -包含的解决方案解决了基于计时器的方法的缺点,确保响应灵敏且无缝的高度变化检测和边距调整。
以上是AngularJS 的 Watch 功能如何改进导航高度变化监控?的详细内容。更多信息请关注PHP中文网其他相关文章!