我有一個服務,並且希望觀察其他服務的數據(因此當數據發生更改時觸發事件)。
// Gets data from an json file and saves it in this.data
myService.service('myService', ['$http', function($http) {
this.data = {}; // This will be returned by $watch
this.loadData = function(){
$http.get('http://localhost/data.json').
success(function(json, status, headers, config) {
this.data = json; // This wont be returned by $watch
});
}
}]);
現在,一些不同的服務,我稱之爲負載的功能,並有$手錶事件:
// Load data
myService.loadData();
// $watch attempt #1
$rootScope.$watch('myService.data', function(data){
console.log(myService.data);
}, true);
// $watch attempt #2
$rootScope.$watch(function(){
return myService.data;
}, function(newVal, oldVal){
console.log(newVal);
});
兩個$手錶的嘗試會告訴我在我的Firebug控制檯:{}(從this.data = {};) 但this.data = json;將不會顯示。
我做錯了什麼?數據更改時有辦法獲得事件嗎?
非常感謝。
非常感謝,它的作品完美。我使用它,因爲它看起來很容易。 – Tream 2014-10-31 11:34:07
是的,這是最簡單,也是更高性能。但綁定的人也有優點,它有點更好,不需要多一個變量。 – dfsq 2014-10-31 11:35:57