我正在尝试观察angularj服务中定义的json数组的更改,但是当发生更改时,$ watch函数不会触发。我的控制器和服务代码如下(plunker demo):
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,cityService) {
//$scope.cities = [];
$scope.service = cityService;
cityService.initCities();
$scope.$watch('service.getCity()', function(newVal) {
$scope.cities = newVal;
console.log(newVal)
});
});
app.service('cityService', function($http) {
this.cities = [];
this.initCities = function() {
$http.get('data.js').success(function(data) {
this.cities = data;
});
};
this.getCity = function() {
return this.cities;
};
});
答案 0 :(得分:2)
这是因为从get set this
到window
对象的回调。在self
。
看到这个plunker http://plnkr.co/edit/CrgTWRBsg5wi7WOSZiRS?p=preview
答案 1 :(得分:1)
我改变了几件事来使其发挥作用: http://plnkr.co/edit/PDMaEvmx7hG1fKvAmR7R?p=preview
似乎没问题