2013-06-07 18 views
8

Oluşturulduktan sonra gözlemlenebilirlere genişletme genişleticisi eklenmesiyle ilgili bir sorun yaşıyorum. Aşağıdaki örnekte, değer, bar için ilk kez çağrıldığında beklendiği gibi değiştiği her seferinde, her seferinde foo üzerinde çalışır. Eşlemeden sonra genişletme genişleticileri uygulama

var viewModel = function(){ 
    var self = this; 

    self.foo = ko.observable(1).extend({ numeric: 1 }); 

    self.bar = ko.observable(1); 

    self.bar.extend({ numeric: 1 }); 
}; 

Esasen ben büyük bir JSON nesnesi haritalama ediyorum ve haritalama özelliklerinin bazılarına ortaya çıktıktan sonra çok yayma eklemek istiyorum. Bunu yapmanın kolay bir yolu var mı?

Aşağıda sorunu gösteren bir jsfiddle geçerli:

http://jsfiddle.net/LgxTn/

cevap

8

sahip sorun genişletici yaratıyor olmasıdır yeni (o uzanan oluyor gözlemlenebilir göre) gözlemlenebilir. Ve bu yeni gözlemlenebilir ikinci görüşmenizde extend'a kullanılmıyor.

Eğer o denir aynı mülk extend aramasını tepki atayabilirsiniz (sulandırıcısının kodu değiştirmeden) Bunu düzeltmek için. Başka bir deyişle

, bu sahip olmak için son satırın önüne self.bar = ekleyin:

self.bar = self.bar.extend({ numeric: 1 }); 
+0

Bu çözüm şablon alt gözlenebilirlerin yeniden işleme üzerinde tepki vermez. Bu http://knockoutjs.com/documentation/extenders.html Canlı Örnek 2'yi deneyin. – hawk

+0

Ne demek istediğimi bilmiyorum. OP ve ben kodumuzu bu belge sayfasında aynı ko.extenders.numeric'de yayınladık. Yaklaşımınız benimkinden önemli ölçüde farklıysa lütfen yeni bir cevap gönderin. –

+0

Belki bir şeyi yanlış anladım ama bu beklendiği gibi çalışmıyor, kontrol et http://jsfiddle.net/BqXed/ – hawk