范围绑定不在http调用中更新

时间:2016-03-21 03:37:08

标签: angularjs http https angular-http

我无法从此功能updateRefresh()内部更新我的范围。第一次迭代我可以看到message == "test",然后它会覆盖范围内的内容,但它在我的HTML页面上绑定的内容<span>{{refreshDomainStatus.message}}</span>仍然绑定到该对象其中message="test"

我已尝试$scope.$apply(),但它说$digest目前正在进行中。

app.controller('AssessmentController', ['$scope', '$http', '$timeout', 'ConnectionService', function ($scope, $http, $timeout, connectionService) {

    $scope.refreshDomainStatus = {
        message: "test"
    };

    var updateRefresh = function(updateKey) {
        $http.get('/assessment/api/update-refresh-domain/' + updateKey).success(function(response) {
            $scope.refreshDomainStatus = response.refreshDomainStatus;

            if (!response.refreshDomainStatus.halted) {
                $timeout(function () { updateRefresh(updateKey); }, 250);
            }
        });
    }

第一次迭代: First Iteration

第二次迭代: Second Iteration

完成并检查上下文后: After

2 个答案:

答案 0 :(得分:1)

您不应该将$scope.refreshDomainStatus设置为response.refreshDomainStatus吗?

    $http.get('/assessment/api/update-refresh-domain/' + updateKey).success(function(response) {
        $scope.refreshDomainStatus = response.refreshDomainStatus;

        if (!response.refreshDomainStatus.halted) {
            $timeout(function () { updateRefresh(updateKey); }, 250);
        }
    });

答案 1 :(得分:0)

我的问题是我正在创建两个控制器实例。我想我想要一些单身,但为了将来的参考,这很糟糕:

        <div class="row" ng-controller="AssessmentController">
            <div class="col">
                <button class="btn btn-default" ng-click="refresh()">Refresh</button>
            </div>

        </div>
        <div ng-show="" class="row" ng-controller="AssessmentController">
            <div class="col">
                <span>{{refreshStatus.message}}</span>    
            </div>
        </div>