我有一个在我的菜单和页面的其他元素之间使用的shared_service工厂。
angular.module('shared_service', []).
factory('Shared', function($scope){
var shared_service = {
something: 'something',
something_else: 'something_else'
};
//I want to watch something so I can change something_else
//$scope.$watch('shared_service.something', function(){
// something_else something_else + 1
//}
return shared_service;
});
我知道我可以像在控制器中那样将观察者附加在其他地方,但对我而言,我觉得应该把它放在这里。这可以把它放在这里吗?
谢谢。
答案 0 :(得分:2)
你可以从$watch
$rootScope
,但我相信,因为它不在控制器中,你必须观察一个函数的返回值...这样的事情应该有效:
angular.module('shared_service', []).
factory('Shared', function($rootScope){
var shared_service = {
something: 'something',
something_else: 'something_else'
};
$rootScope.$watch(function() {
return shared_service.something;
}, function () {
shared_service.something_else = shared_service.something_else + 1;
});
return shared_service;
});