我正在对 View 中用于生成列表的数据进行AJAX请求。我需要知道何时更新$ scope以及何时在收到成功响应后呈现 View ,以便可以为列表动态设置一些初始值和一些事件处理程序。
我目前正在使用下面的代码,但不能达到目的:
responsePromise.success(function (data, status, headers, config) {
var slideInfos = data;
$scope.slideInfos = slideInfos;
setInitialSliderValues();
});
在我调用setInitialSliderValues()时, View 仍未刷新。
当我尝试使用以下命令时,出现错误“$ digest已经在进行中”:
responsePromise.success(function (data, status, headers, config) {
var slideInfos = data;
$scope.$apply(function () {
$scope.slideInfos = slideInfos ;
setInitialSliderValues();
}
});
如何完全确定对数据的更改已在页面上生效,而无需使用检查我期望的更改的计时器。
最佳答案
使用$timeout()
,它将在下一个摘要周期中运行。不要忘记在 Controller 上添加$timeout
依赖项。
$timeout(function () {
$scope.slideInfos = slideInfos ;
setInitialSliderValues();
});