在 angularJs 中:在字符串变量上设置 $watch 和在对象的键上设置 $watch 有什么不同?

In angularJs: what's the different between setting $watch on string variable and setting $watch on Object's key?

在 angularJs 中:在字符串变量上设置 $watch 和在对象的键上设置 $watch 有什么不同?

详细场景如下:

$scope.activedMenu = {'id' : '...', 'name' : 'menu1'};
$scope.selectedMenuName = 'menu1';
$scope.$watch('activedMenu.name', function () {...});
$scope.$watch('selectedMenuName', function () {...});

所以,我的问题是“$scope.$watch('activedMenu.name', function () {...})”和“$scope.$watch('selectedMenuName'”之间有什么区别, 功能 () {...})”?任何帮助将不胜感激!

(我认为这两种设置 $watch 的方法是等价的,我参考了范围开发指南!https://docs.angularjs.org/guide/scope

基本上$watch需要字符串参数并在当前范围内搜索该参数并在其上放置脏表。

activedMenu.name 上观看 selectedMenuName 是一回事,第一个将在 name 属性 上观看activedMenu,第二个将监视 selectedMenuName 范围变量。

我认为唯一的区别是您正在观看单个 属性,因此您可以在此处使用对象相等选项,它可以深入观察对象的变化。您可能有第一只手表,但手表字符串应仅 activedMenu

$scope.$watch('activedMenu', function(newVal, oldVal){
   //on watch code here
}, true);