2016-11-24 33 views
0

我有工作正常,從一個RESTful API繪製饋信息

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() 
     }); 

回答

1

$scope.apply不是你的問題,範圍將自動以$http請求$interval的端部被消化。某些行爲自動「通知」Angular範圍可能已經改變並觸發摘要;只有在編寫「非角度」代碼時,您可能必須顯式觸發範圍摘要,否則Angular將不會注意到任何更改。

不,你的問題是你打電話getData(),然後其返回值undefined)每隔10秒執行一次。這顯然是無稽之談。你只是想通過本身的功能$interval

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

我會考慮mysefl耳光的後腦勺,欣賞詳細介紹,作品prefectly! – MOLEDesign