【发布时间】:2017-03-08 15:11:51
【问题描述】:
我目前正在从事一个项目,我必须从一个视图中执行多个发布请求。我的问题是,我总是得到一个无限的 $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>
如您所见,我使用了 Promise、watcher 和 $scope.$apply,但仍然存在无限循环。
有没有办法确保函数 bar(和相应的 foo)只被调用一次?
提前致谢!
【问题讨论】:
-
你的
bar('asdf')无论如何都不会显示任何东西——你没有从函数中返回任何东西。即使你确实返回了$scope.foo(param),你得到的只是你的$scope.foo()返回的promise 对象。而且每次调用摘要循环时都发出http请求是没有意义的,这是很多请求。 -
感谢您的回答。我找到了一种更有效的方法来解决这个问题!
标签: javascript angularjs infinite-loop angularjs-digest