2014-03-29 56 views
0

我在我的菜單和頁面的其他元素之間使用了此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; 
}); 

我知道我可以在控制器的其他地方連接的守望者一樣,但對我來說感覺我應該把它放在這裏。這有可能把它放在這裏嗎?

謝謝。

回答

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; 
    }); 
+0

謝謝非常完美,題。我知道這是因爲閉包,但你可以看到shared_service.something,因爲它是一個對象屬性而不是正確的變量?正如我不能看到shared_service,如果它只是一個字符串。 – pk1m

+0

我*應該*在看功能時工作......但我不積極 – dave