Показать сообщение отдельно
  #11 (permalink)  
Старый 03.10.2013, 20:40
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shitbox2
Тут сам бог велел отсылать события в глобальный $rootScope
Сообщение от nerv_
Т.о., если я каждое значение скролла отправляю через скоп, я пересчитываю все приложение много-много раз.
Сообщение от Shitbox2
А, вообще, в Ангуляр не мешало бы добавить директиву для скроллинга для навешивания на window, textarea и т.п.
примерно так
.directive( 'ngScroll', [ '$timeout', '$document', function( $timeout, $document ) {
    return {
        link: function( scope, element ) {
            var timer = { cancel: angular.noop };
            element = element[ 0 ].tagName === 'HTML' ? $document : element;

            element.bind( 'scroll', function() {
                var elem = element[ 0 ].documentElement ? element[ 0 ].documentElement : element[ 0 ];
                $timeout.cancel( timer );

                timer = $timeout(function() {
                    scope.$emit( 'event:name', {
                        scrollTop: element.scrollTop(),
                        scrollLeft: element.scrollLeft(),
                        scrollHeight: elem.scrollHeight,
                        scrollWidth: elem.scrollWidth,
                        clientHeight: elem.clientHeight,
                        clientWidth: elem.clientWidth
                    });
                }, 200 );
            });
        }
    };
}]);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием