$在工厂内观看

时间:2014-03-29 22:21:58

标签: javascript angularjs

我有一个在我的菜单和页面的其他元素之间使用的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;
});

我知道我可以像在控制器中那样将观察者附加在其他地方,但对我而言,我觉得应该把它放在这里。这可以把它放在这里吗?

谢谢。

1 个答案:

答案 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;
  });