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

  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006