我在我的角度应用程序中提供服务。此服务通过一些操作提供对数组的访问(访问提供给许多控制器,它们都需要观察此变量)。
但是如何观察此服务的变化?它没有$ scope,我也不知道,在哪里可以找到$ watch?
这是我的服务代码:
(function(){
angular.module('something')
.factory('MasterService',['$http', function($http){
var service = this;
var data = {
operations: [] // this array need to be accessible from controllers
};
$http.get('some/url').success(function(data){
// here we mofidy array with loaded from server
data.operations = angular.copy(data.operations);
});
return {
// controllers will receive operations via this method
getOperations: function () {
return data.operations;
}
};
}])
})();
如何在此服务中观察操作变量?我需要添加类似的东西:
operations.$watch(function(){
//make some actions with operations
});
答案 0 :(得分:0)
在控制器中,您可以$观看一个返回服务数据的函数:
$scope.$watch(function() {
return MasterService.getOperations();
}, function(newVal, oldVal) {
// do something with newVal;
});
答案 1 :(得分:0)
当你的数据在角度之外变化时,$ watchers非常有用,而且在角度应用程序中使用它是非常多余的,因为摘要周期已经有了观察者,你最好检查我们的逻辑。
使用这种方法,你甚至不需要$ watcher
(function(){
angular.module('something')
.factory('MasterService',['$http', function($http){
var service = this;
var data = {
operations: [] // this array need to be accessible from controllers
};
//ommitted
return {
// controllers will receive operations via this method
operations: data.operations
};
}])
})();
并在控制器中
$scope.operators = MasterService.operators;