我从其他线程也知道这个指令。 现在我遇到了一个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');
});
}
});
}
}
})();
答案 0 :(得分:0)
这只是意味着你不需要调用scope.$apply();
因为摘要已经发生,所以无论你想用它实现什么,都已经发生了。只需删除该行,事情就可以正常工作。