2013-10-21 184 views
1

我想在控制器中觀看值。當它發生變化時,我想發送一個廣播,但我從來沒有進入$watch函數。這裏是功能:

$scope.$watch($scope.selectedEncounter, function(selectedEncounter) { 
    $scope.$broadcast('selecteRowChange', { encounter: selectedEncounter }); 
    }); 

我可以看看附加到示波器上的東西嗎?如果是這樣,我對這個代碼有什麼問題。如果不是,我該如何實現這個代碼才能工作?

回答

3

您應該將function或屬性名稱傳遞給您的$watch函數。從文檔

$scope.$watch('selectedEncounter', function(value) { 
    // ... 
}); 

Here is some more info

所以,你的情況,你應該改變你的代碼。

+0

兩者有什麼區別?如何知道在$ scope對象上查看該屬性? – jhamm

+0

你在做什麼是要求Angular注意名稱等於屬性'$ scope.selectedEncounter'的當前值的屬性。基本上,假設您在'$ watch'行之前發佈了'$ scope.selectedEncounter ='test''。所以基本上,你正在做的是在當前範圍內爲'test'屬性設置'$ watch'。 Angular始終會查看'$ scope',您在其中調用'$ watch'。 –

+0

只要加上最後一句話,如果你有'scope1。$ watch('prop')',它將''watch'在'scope1'中。如果你有'$ rootScope。$ watch',那麼你會在['$ rootScope'](http://docs.angularjs.org/api/ng.$ro​​otScope)等等中觀察。 –

1

您正在看的對象是一個複雜的對象。因此,你應該設置objectEqualitytrue在你的代碼如下:

$scope.$watch('selectedEncounter', function(selectedEncounter) { 
// .... 
}, true); 

通知的true值作爲最後一個參數,以在年底$scope.$watch功能。

+0

我試過了,它沒有工作。 – jhamm

相關問題