gpt4 book ai didi

javascript - Angular - 无限 $digest 循环

转载 作者:行者123 更新时间:2023-12-03 04:50:38 26 4
gpt4 key购买 nike

我目前正在开发一个项目,我必须从一个 View 执行多个发布请求。我的问题是,我总是得到无限的 $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)只被调用一次?

提前致谢!

最佳答案

每次摘要周期运行时都发出请求是没有意义的。像这样更改您的代码:

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.foo 函数中删除 $scope.$apply(),它是不需要的。

关于javascript - Angular - 无限 $digest 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com