2016-08-14 3 views
0

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

Error: $rootScope:inprog Action Already In Progress $digest already in progress

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

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

ответ

0

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

Смежные вопросы