【AngularJS】$watchでオブジェクト内の1階層分だけを監視したい時。

$watchCollectionを用いる。

$watchCollectionは$watchと引数が多少ことなり、第1引数はオブジェクトか文字列を受け取る。

// scope内の変数であれば文字列で指定可能
$scope.$watchCollection('user', function() {
    // 処理
});

// オブジェクトを渡せばそれを監視してくれる
$scope.$watchCollection(obj, function() {
    // 処理
});

階層が深い巨大なオブジェクトを監視させたい場合にとても有効。