AngularJS $摘要已在onScroll事件中进行

时间:2016-08-14 18:28:52

标签: angularjs

我从其他线程也知道这个指令。 现在我遇到了一个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 :(得分:0)

这只是意味着你不需要调用scope.$apply();因为摘要已经发生,所以无论你想用它实现什么,都已经发生了。只需删除该行,事情就可以正常工作。