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

  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • PlugResearch

    PlugResearch

    22 Mart 2006
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009