Traditional approaches to handling height changes in AngularJS, such as using timers, can introduce drawbacks like delays and inefficiencies. A more effective solution is to leverage AngularJS's built-in watch机制.
New and Improved Directive:
The emHeightTarget directive registers a watch on the __height property, which is updated by the emHeightSource directive every digest cycle. When the __height property changes, the directive updates the margin-top style of the target element based on the new height value.
<code class="javascript">.directive( 'emHeightTarget', function() { return { link: function( scope, elem, attrs ) { scope.$watch( '__height', function( newHeight, oldHeight ) { elem.attr( 'style', 'margin-top: ' + (58 + newHeight) + 'px' ); } ); } } } )</code>
The emHeightSource directive registers a watch that executes every digest cycle. It updates the __height property with the current height of the element.
<code class="javascript">.directive( 'emHeightSource', function() { return { link: function( scope, elem, attrs ) { scope.$watch( function() { scope.__height = elem.height(); } ); } } } )</code>
Advantages:
The above is the detailed content of How Can AngularJS Efficiently Handle Height Changes?. For more information, please follow other related articles on the PHP Chinese website!