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

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • finalcall07

    finalcall07

    11 NİSAN 2008
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013