1

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', function () {.. .})"? どんな助けでも大歓迎です!

( $watch を設定するこれら 2 つの方法は同等だと思います。スコープ開発ガイドを参照してください! https://docs.angularjs.org/guide/scope )

4

1 に答える 1

1

基本的$watchに、文字列パラメーターが必要で、現在のスコープ内でそのパラメーターを検索し、その上にダーティ ウォッ​​チを配置します。

ORのactivedMenu.name 監視 selectedMenuNameは同じもので、1 つ目は のnameプロパティを 監視しactivedMenu、2 つ目はselectedMenuNameスコープ変数を監視します。

私が思う唯一の違いは、単一のプロパティで監視しているため、ここでオブジェクトの等価オプションを使用して、オブジェクトの変更を深く監視できることです。あなたの最初の時計には可能かもしれませんが、時計の文字列activedMenu

$scope.$watch('activedMenu', function(newVal, oldVal){
   //on watch code here
}, true);
于 2015-04-27T03:37:47.197 に答える