AngularJS : bir nesne $izle
Burada çok basit bir şey kaçırdığıma eminim.
Bir sözlük değişiklikleri izlemek için istiyorum, ama nedense izlemek için geri çağrılmaz.
Burada kullandığım denetleyici:
function MyController($scope) {
$scope.form = {
name: 'my name',
surname: 'surname'
}
$scope.$watch('form', function(newVal, oldVal){
console.log('changed');
});
}
Burada keman: http://jsfiddle.net/Y8ByG/
Bekliyorum $izlemek her zaman görevden geri çağırma adı ya da soyadı değişti, ama olmuyor.
Bunu yapmak için doğru yolu nedir?
Teşekkür ederim
CEVAP
Üçüncü bağımsız değişken true
$watch
arayın:
$scope.$watch('form', function(newVal, oldVal){
console.log('changed');
}, true);
Varsayılan karşılaştırırken iki karmaşık nesneleri JavaScript onlar kontrol için "referans" eşitlik, isterse iki nesneleri başvurmak için aynı şey yerine, "değer" eşitlik, kontrol değerleri tüm özelliklerini bu nesneleri eşit.
Başına Angular documentation üçüncü parametre objectEquality
:
objectEquality == true
watchExpression eşitsizliğiangular.equals
fonksiyonuna göre belirlenir. Daha sonra karşılaştırma için nesnenin değeri kaydetmek içinangular.copy
işlevi kullanılır. Bu nedenle karmaşık nesneleri izlerken yan bellek ve performans etkileri olacaktır anlamına gelir.
Herhangi bir JSON AngularJS içinde JSO...
Nasıl angularJS nesne özelliği tarafın...
ne tarayıcıda ne zaman angularjs $root...
AngularJS : gözlemlemek $arasındaki Fa...
AngularJS : izle Net $...