【发布时间】:2014-10-03 13:56:54
【问题描述】:
我在尝试让 AngularJS 显示一个承诺时面临一个无限循环,如本文所述:http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/。
我先打电话给$parseProvider.unwrapPromises(true);:
.config(["$parseProvider",
function($parseProvider) {
$parseProvider.unwrapPromises(true);
}])
这是我用来访问消息的工厂:
app.factory("MessageHelper", [
function() {
// omitted for brevity:
// calling the server for getting the messages
return {
get: function(code) {
var args = Array.prototype.slice.call(arguments);
args.shift();
if (messages) {
return $q.when(format(messages[code], args));
}
var deferred = $q.defer();
deferredMessages.push({ code: code, args: args, deferred: deferred });
return deferred.promise;
}
};
}]);
然后,在控制器中:
$scope.msg = {
get: function() {
return MessageHelper.get.apply(this, arguments);
}
};
最后,在一个视图中:
<span>{{msg.get("existing.message.code", "first param", "second param")}}</span>
这里是无限循环:$scope.msg.get 被无限调用...知道为什么吗?
【问题讨论】:
标签: javascript angularjs promise infinite-loop