"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puede AngularJS $watch reemplazar los temporizadores en el ajuste de altura de navegación dinámica?

¿Cómo puede AngularJS $watch reemplazar los temporizadores en el ajuste de altura de navegación dinámica?

Publicado el 2024-11-05
Navegar:995

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

Evitar temporizadores en altura para observar AngularJS

Los programadores de AngularJS a menudo enfrentan el desafío de la navegación receptiva cuando la altura de navegación es dinámica. Esto lleva al requisito de ajustar el valor del margen superior del contenido en respuesta a los cambios en la altura de navegación.

Anteriormente, se usaba un temporizador para detectar cambios en la altura de navegación, pero este enfoque tenía desventajas: el uso de un temporizador y un retraso en el ajuste del margen superior del contenido.

Afortunadamente, existe un enfoque mejor: aprovechar la funcionalidad $watch de AngularJS. En lugar de un temporizador, se registra un observador en 'emHeightSource', que se invoca durante cada ciclo de $digest. El observador actualiza la propiedad '__height'.

En 'emHeightTarget', otro observador monitorea '__height' y actualiza el valor del margen superior en consecuencia, asegurando que el margen superior del contenido cambie sin problemas y en sincronía con la navegación. altura.

Aquí está el código refinado usando observadores:

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

} )
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3