«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как AngularJS $watch может заменить таймеры при динамической настройке высоты навигации?

Как AngularJS $watch может заменить таймеры при динамической настройке высоты навигации?

Опубликовано 5 ноября 2024 г.
Просматривать:207

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

Избегание таймеров при наблюдении за высотой для AngularJS

Программисты AngularJS часто сталкиваются с проблемой адаптивной навигации, когда высота навигации является динамической. Это приводит к необходимости корректировать значение верхнего края контента в ответ на изменения высоты навигации.

Ранее для обнаружения изменений высоты навигации использовался таймер, но у этого подхода были недостатки: использование таймера и задержка в настройке поля отступа контента.

К счастью, существует лучший подход: использование функции $watch AngularJS. Вместо таймера в emHeightSource регистрируется наблюдатель, который вызывается во время каждого цикла $digest. Наблюдатель обновляет свойство «__height».

В «emHeightTarget» другой наблюдатель отслеживает «__height» и соответствующим образом обновляет значение поля-верха, обеспечивая плавное и синхронное изменение поля верха содержимого с навигацией. height.

Вот уточненный код с использованием наблюдателей:

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

} )
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3