我知道$digest已经在进行中的错误问题,但这里我没有显式调用apply或digest方法
我在同一angularJS函数中使用了两个http调用,这导致了$digest已经在进行中的错误,我的代码就像
$http.post('/CRUDOper/memberInsert',$scope.memberAdd).
success(function(post){
if(!post.IsSuccess){
alert(post.msg + "Try Again");
return;
}
alert("Member Added Successfully");
}
);
var autopass = Math.random().toString(36).slice(-8);
var passwordinsert = {formno : $scope.memberAdd.formno, password : autopass };
$http.post('/CRUDOper/autogeneratepassword',passwordinsert).
success(function(post){
if(!post.IsSuccess){
alert(post.msg + "Try Again");
return;
}
alert("Autogenerated Password for present user : " + autopass );
}
);
两个请求都被正确调用了。我担心的是$digest的firebug中的错误已经在进行中。有什么方法可以处理这个错误吗?
AngularJS的事件循环不会等到alert()
、confirm()
和prompt()
返回值(至少对于$http
调用)。然而,呈现弹出窗口和进入$digest
循环之间的间隔很短。这解释了为什么OP第一次没有得到错误:OP很快点击或按下返回键。
要验证这是否取决于http调用的数量,请尝试在单个http调用的success()
方法中使用一个警报。如果您在大约300毫秒内确认弹出窗口,则不会出现错误,但如果您稍后确认,则会出现错误。
您应该使用$window.alert。尽管如此,当另一个摘要正在进行时,还是会发生这种情况,一个快速的解决方法是将其封装到$timeout()中