„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann AngularJS $watch Timer bei der dynamischen Navigationshöhenanpassung ersetzen?

Wie kann AngularJS $watch Timer bei der dynamischen Navigationshöhenanpassung ersetzen?

Veröffentlicht am 05.11.2024
Durchsuche:107

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

Vermeiden von Timern bei der Höhenüberwachung für AngularJS

AngularJS-Programmierer stehen oft vor der Herausforderung einer reaktionsfähigen Navigation, wenn die Navigationshöhe dynamisch ist. Dies führt dazu, dass der Wert des oberen Rands des Inhalts als Reaktion auf Änderungen der Navigationshöhe angepasst werden muss.

Früher wurde ein Timer verwendet, um Änderungen der Navigationshöhe zu erkennen, dieser Ansatz hatte jedoch Nachteile: die Verwendung eines Timers und eine Verzögerung bei der Anpassung des oberen Rands des Inhalts.

Glücklicherweise gibt es einen besseren Ansatz: die Nutzung der $watch-Funktionalität von AngularJS. Anstelle eines Timers wird in „emHeightSource“ ein Beobachter registriert, der bei jedem $digest-Zyklus aufgerufen wird. Der Beobachter aktualisiert die Eigenschaft „__height“.

In „emHeightTarget“ überwacht ein anderer Beobachter „__height“ und aktualisiert den Wert für den oberen Rand entsprechend, um sicherzustellen, dass sich der obere Rand des Inhalts reibungslos und synchron mit der Navigation ändert Höhe.

Hier ist der verfeinerte Code mit Beobachtern:

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

} )
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3