我目前正在开展一个项目,我必须从视图中执行多个帖子请求。我的问题是,我总是得到一个无限的$ digest循环。这是我目前的代码:
JS-文件:
$scope.foo = function(param) {
var deffered = $q.defer();
$http.post('ASDASD.php', {string : param})
.then(function(data) {
deffered.resolve(data);
$scope.$apply();
}
);
return deffered.promise;
};
$scope.bar = function(param) {
$scope.foo(param).then(function(result) {
return result;
});
};
视图:
<div ng-controller='asdfCtrl'>
{{bar('asdf')}}
...
{{bar('jkl')}}
</div>
正如你所看到的,我使用了promises,watcher和$ scope。$ apply,但仍然存在无限循环。
有没有办法确保函数栏(和相应的foo)只调用一次?
提前致谢!
答案 0 :(得分:1)
每次摘要周期运行时发出请求都没有意义。改为使用这样的代码:
JS:
$scope.results = {};
$scope.bar = function(param) {
$scope.foo(param).then(function(result) {
$scope.results[param] = result;
});
};
$scope.bar('asdf');
$scope.bar('jkl');
HTML:
<div>
{{results['asdf']}}
...
{{results['jkl']}}
</div>
此外,从您的$scope.$apply()
功能中移除$scope.foo
,不需要。