Angular.js中的任何事件是"在$ scope digest上完成"还是"在视图上刷新"?

Gal*_*lya 2 javascript angularjs angularjs-timeout angularjs-digest

我正在对视图中用于生成列表的数据执行AJAX请求.我需要知道$ scope更新的时间以及收到成功响应后呈现视图的时间,以便我可以为列表动态设置一些初始值和一些事件处理程序.

我目前正在使用以下代码,但没有做到这一点:

responsePromise.success(function (data, status, headers, config) {
    var slideInfos = data;
    $scope.slideInfos = slideInfos;
    setInitialSliderValues();
});
Run Code Online (Sandbox Code Playgroud)

在我调用setInitialSliderValues()时,视图仍然没有刷新.

当我尝试使用以下内容时,我收到错误"$ digest已在进行中":

responsePromise.success(function (data, status, headers, config) {
    var slideInfos = data;
    $scope.$apply(function () {
        $scope.slideInfos = slideInfos ;
        setInitialSliderValues();
    }
});
Run Code Online (Sandbox Code Playgroud)

如何在不使用检查我期望的更改的计时器的情况下确保数据更改已在页面上生效.

Pan*_*kar 8

使用$timeout()它将在下一个摘要周期中运行.不要忘记添加$timeout对控制器的依赖.

$timeout(function () {
    $scope.slideInfos = slideInfos ;
    setInitialSliderValues();
});
Run Code Online (Sandbox Code Playgroud)

  • $timeout 将触发进一步的消化循环。使用 $timeout(fn,0,false) (2认同)