2014-11-14 37 views
0

我想監視$ rootScope變量之一。

它的工作原理,並更新酒吧當我明確地註冊一個觀察者:

$rootScope.$watch('foo', function(newVal) { 
    $scope.bar = newVal; 
}); 

但是,當我剛分配酒吧至$ rootScope的它不會更新。它不應該隱式地爲這個表達式分配一個觀察者嗎?

$scope.bar = $rootScope.foo; 

順便說一句,最初是一個空的對象,並將其更新爲{「測試」:「東西」}以後。

UPDATE

這是現在很清楚,這個表達式不會指派一位守望自我更新。那麼,有沒有辦法更新在控制器中沒有監視功能?

是否有承諾可用於此目的?我認爲Restangular能做到這樣的:

$scope.list = Restangular.all('accounts').getList().$object; 
+1

nope。那只是一項任務。 – 2014-11-14 13:04:32

+0

是的,這似乎是一個愚蠢的問題:)我更新了我的問題。 – halilb 2014-11-14 13:18:28

回答

3

沒有因爲這不是如何JavaScript的作品。如果試圖這樣的事情之外的角度,你會看到什麼都不會更新:

var temp = 4; 
var temp2 = temp; 

temp = 5; 
console.log(temp2); //outputs 4 

的原因,它爲其他事情的工作(如對象)是因爲他們被引用。這個例子將工作:

var temp = { value: 4 }; 
var temp2 = temp; 

temp.value = 5; 
console.log(temp2); //outputs { value: 5 } 

編輯

沒有看到你的代碼的其餘部分,根據關你的評論,我要去假設你摧毀了你的參考。雖然我上面的例子可以工作,但這個不會:

var temp = { value: 4 }; 
var temp2 = temp; 

temp = { value: 5 }; 
console.log(temp2); //outputs { value: 4 } 
+0

感謝馬修,但我的foo實際上是一個對象。它的初始值是{},更新後的值是{'label':'test'}。無論如何,我更新了我的問題。 – halilb 2014-11-14 13:20:29