Utilising $scope.apply()



我有以下功能正常的,从静止的API feed

绘制信息
app.controller('servicesController', ['$scope', '$location', '$http', '$interval',
    function($scope, $location, $http, $interval) {
        var getData = function() {
        // Initialize $scope using the value of the model attribute, e.g.,
        $scope.url = "https://(remote link to JSON api)";
        $http.get($scope.url).success(function(data) {
            $scope.listOfServices = data.runningServices; // get data from json
        });
        };
        getData();
        $interval(getData(), 10000);
    }
]);

但是,我的观点不是预期的10秒一次更新一次。我读到我需要在以上代码中的某个地方使用$ scope.apply()。

我尝试将以下内容(在上面的适当位置)放置

 $http.get($scope.url).success(function(data) {
            $scope.listOfServices = data.runningServices; // get data from json
            $scope.apply(); //I also tried $scope.runningServices.apply()
        });

$scope.apply不是您的问题,范围将在$http请求 $interval结束时自动消化。某些动作自动"告知"角度可能已更改并触发摘要;只有当您写"非角度"代码时,才必须明确触发示波器摘要,因为否则Angular不会注意到任何更改。

否,您的问题是您正在调用getData(),然后具有其返回值undefined)每十秒钟执行一次。显然是胡说八道。您只想将功能本身传递给$interval

$interval(getData, 10000);
// look ma, ^^^^^, no parentheses

最新更新