2013-10-21 142 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

相关问题