コードスニペットがあります:
var app = angular.module('Demo', []);
app.controller('DemoCtrl', function ($scope) {
function notify(newValue, oldValue) {
console.log('%s => %s', oldValue, newValue);
}
$scope.$watch('collection.length', notify);
$scope.$watch('my', notify);
$scope.collection = [];
$scope.my = 'hello';
});
$watch
最初に発火します。このコード スニペットは次のように出力します。
0 => 0
hello => hello
それは正しい行動ですか?もちろん、値が等しいかどうかを確認することはできますが、そのような動作の理由は何ですか?
PS このサンプルをオンラインで試すことができます: http://jsbin.com/otakaw/7/edit