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

  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011