2016-08-14 71 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();因爲摘要已經發生,所以無論你是想達到與它已經發生了。只要刪除線,事情應該正常工作。

相關問題