我是AngularJS的新手,所以这可能实际上指向一些我尚未完全理解的核心概念。我正在尝试使用$q
& promise
对象来处理“本地数据”之类的“远程数据”。直到没有获取远程数据时,promise
对象才会解析,但只要解析完成,我就想要更新视图中所有依赖的数据绑定。但是,以下方法导致无限循环,其中remote_total
被重复调用,即使之前调用remote_total
导致解析的承诺对象。AngularJS - 由于承诺对象造成的无限循环
这是我的看法是什么样子
<div ng-controller="MyController">
{{ remote_total() }}
</div>
下面是来自控制器的相关片段:
function MyController($scope, $q, $http) {
$scope.remote_total = function() {
var def = $q.defer();
$http.get('/my/remote/service.json').success(function(data) {
def.resolve(data);
});
return def.promise;
}
}
首先,这将是巨大的,如果任何人都可以向我解释为什么恰恰是这个进入一个无限循环。其次,什么是实现我想要做的最好的方法?
我怎么不得不说“ {{remote_total}}'而不是'{{remote_total()}}'。这仅仅是角度魔术还是两者在意义上存在实际差异? –
Angular检测到,它是一个承诺,并在显示之前解决它 –
我认为只需'$ scope.remote_total = $ http.get('/ my/remote/service.json')'就足够了。 –