AngularJS $ дайджест уже выполняется на событии onScroll

0

У меня есть эта директива, также известная из других потоков. Теперь я столкнулся с исключением AngularJS:

Ошибка: $ rootScope: действие inprog уже начато. $ Digest уже выполняется.

Кто-нибудь знает, как я могу предотвратить это исключение? Я попробовал его с помощью триггера, но без успеха.

 (function() {
'use strict';

angular
    .module('myProject.common')
    .directive('asScrollTop', asScrollTop);

asScrollTop.$inject = ['chatService'];

function asScrollTop(chatService) {
    var directive = {
        restrict: 'A',
        scope: { 
            chatMessagesOfUser: '=',
            currentUser: '=',
            messagesPage: '='
            },
        link: link
    };
    return directive;

    ////////////

    function link(scope, element, attr) {
        console.log(element);
        var trigger = false;
        element.on('scroll', function() {

          if(element[0].scrollTop <= 0 && trigger == false) {
              trigger = true;
              var page = scope.messagesPage + 1;

              chatService.getChatMessagesOfUser(scope.currentUser.id, page).success(function(response) {
                  scope.chatMessagesOfUser = response;
                  scope.$apply();
                  trigger = false;
                }).error(function(data) {
                    console.log('error in asScroll.directive.js#link');
                });
          }
        });
      }
}
})();
Теги:

1 ответ

0

Это просто означает, что вам не нужно вызывать scope.$apply(); потому что дайджест уже происходит, поэтому все, что вы пытались достичь с ним, уже происходит. Просто удалите строку, и все должно работать нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню