我正在对 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();
});

10-05 20:48