我只是从控制器中的服务获取json数据。
我正在使用回调函数在加载时打印成功消息。它工作正常,但它也抛出了我在问题中提到的错误
//JSON file
{
"pc":"name"
}
// angular services
var service = angular.module('Services', ['ngResource']).
factory('Widgets', function($resource){
return $resource('/json/home.json', {}, {
query: {method:'GET', params:{}, isArray:false}
});
});
//controller
function editWidget($scope, Widgets) {
$scope.data = Widgets.query(function(data) {
alert("Success Data Loaded ---> " + JSON.stringify(data.pc));
});
}
答案 0 :(得分:12)
alert
,以及confirm
和prompt
将暂停执行代码(阻止线程),在此期间如果应该在超时期间触发超时和间隔暂停。 $digest
循环由两个较小的循环组成,它们处理$evalAsync
队列和$watch
列表。 $evalAsync
队列用于调度需要在当前堆栈帧之外但在浏览器的视图渲染之前发生的工作。这通常使用setTimeout(0)
完成。在此期间您的警报会导致问题。
答案 1 :(得分:10)
在摘要周期完成后,您可以使用$ timeout来执行警报,这样可以避免此错误。
$timeout(function () {
alert('Alert text');
});
也不要忘记在指令中注入$ timeout
答案 2 :(得分:0)
if(!confirm('Your message')){
return false;
}else {
return false;
}
在两种情况下都返回false。
答案 3 :(得分:-2)
function delayalert(messagestr){
setTimeout(function(){
alert(messagestr);
},0);
}