SORU
18 EKİM 2013, Cuma


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
18 EKİM 2013, Cuma


Üçü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ği angular.equals fonksiyonuna göre belirlenir. Daha sonra karşılaştırma için nesnenin değeri kaydetmek için angular.copy işlevi kullanılır. Bu nedenle karmaşık nesneleri izlerken yan bellek ve performans etkileri olacaktır anlamına gelir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • K-391

    K-391

    23 EKİM 2012
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008