我在一个包含 ajax 调用的角度服务中有一个函数,它执行以下操作:
function performCall($scope){
$scope.dataFail = false;
var promise = doAjaxCall();
promise.then(function(data){
if(data.rootElement){
//process...
}else{
$scope.dataFail=true;
}
}
}
我的控制器中的 $watch 表达式正在监视 dataFail 并显示一个对话框,其中包含在确认对话框时调用 performCall 的选项:
$scope.$watch('dataFail', function(dataFail){
if(dataFail){
//open dialog
$( "#ajaxFailurePopup" ).dialog({
zIndex: 3003,
title: "Note:",
modal:true, // Disable controls on parent page
buttons: {
Ok: {
text: 'Retry >',
"class" : 'ppButton floatRight',
click:
function() {
service.performCall($scope);
$("#ajaxFailurePopup").remove();
}
}
}
});
};
});
当 ajax 调用第一次失败时,这在初始化时效果很好。但是,在此之后,对 的任何更改都不会dataFail
被$watch
. 有人有什么建议吗?