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