角度绑定到异步结果

时间:2016-06-27 12:21:06

标签: angularjs

我尝试了各种各样的方法,但对我来说没有任何作用。我有什么:

app.controller('someCtrl',
...

$scope.load = function () {
    client.loadAgreements().
        then(function (response) {
            $scope.unapprovedCount = response.data[StatusTypeEnum.Unapproved];
            $scope.approvedCount = response.data[StatusTypeEnum.Approved];

            $scope.$apply();
        });
};

Html部分:

<button text="'({{unapprovedCount}})'" ...
<button text="'({{approvedCount}})'"...

当我这样做时:

app.controller('someCtrl',
...

$scope.unapprovedCount = 777;

$scope.load = function () {
    client.loadAgreements().
        then(function (response) {
            $scope.unapprovedCount = response.data[StatusTypeEnum.Unapproved];
            $scope.approvedCount = response.data[StatusTypeEnum.Approved];

            $scope.$apply();
        });
};

页面渲染时我可以看到777。但是,我没有看到承诺的任何更新。已分配变量但未更新视图。如果我添加apply方法,那么我会收到错误:

  

错误:[$ rootScope:inprog] $ digest已在进行中

我还能尝试什么,因为我是棱角分明但不知道如何做到这一点?

编辑:

我不确定这是否重要,但实际上这个按钮使用指令:

<button ng-fas-button-with-color-indicator text"'Approved  ({{unapprovedCount}})'" color="red" ...

text在某个div中呈现。

2 个答案:

答案 0 :(得分:1)

删除

$scope.$apply();
从您的代码

并在您的控制台中检查

的值
response.data[StatusTypeEnum.Unapproved]

答案 1 :(得分:0)

为什么需要$scope.$apply()

您必须将其从代码中删除。

此功能的唯一需要是当您使用第三方lib来操作范围内的变量时,在angular的观察之外。

当你使用apply并且摘要周期没问题,没有任何改变时,会引发错误