2012-03-15 14 views
42

Görünüm modelimde observableArray var. Vm'yi oluşturduktan sonra, verileri tamamen observableArray ile değiştirmek istiyorum.Knockout.js konumundaki tüm öğeleri değiştirin observableArray

//Initial Setup 
var vm = {}; 
vm.roles = ko.observableArray([]); 
ko.applyBindings(vm); 


//....replace array later on.... 
vm.roles(["1", "2"]); 

Bu iyi çalışıyor gibi görünüyor, ama bu yanlış ve bellek sızıntıları yol açabilir eğer endişe: İşte ben yapıyorum nasıl. Mevcut bir observableArray numaralı telefonu güncellemenin tercih edilen yolu, tüm verilerini değiştirmek istediğinizi varsayar mı?

observableArray'un bir removeAll() yöntemine sahip olduğunu fark ettim ve bunun temiz bir şekilde yapılması için çağrılması gerekip gerekmediğini merak ettim, ya da yaptığım işin iyi olup olmadığını merak ettim mi?

cevap

38

Kullandığınız teknik, observableArray numaralı belgede verileri tamamen değiştirmek için önerilen yaklaşımdır. Bir observableArray aslında temel bir dizi ve tetik bildirimleri üzerinde hareket eden yararlı dizi işlemleri için ek işlevler eklenmiş sadece bir normal observable.

+3

yeniden vardı. Eğer belgeleri/bağlantıları destekleyen gelmiş olabilir misin ifaden? Tabii ki, tabi ki; Siz Bay Knockmeout sizsiniz (O;) – Kristopher

-4

Önerilen yaklaşımın IE9 veya daha düşük çalışmadığı görülüyor. Bunun yerine sana "önerilen yaklaşım" içinde http://skeptics.stackexchange.com/ tekmeler üzerinde soruları yanıtlayan benim eğitim dediğimiz zaman nesne,

vm.roles = ko.observableArray(["1","2"]) 
+0

Yeni Knockout sürümleriyle değişip değişmediğini merak ediyorum ... Hangi süreyi kullanıyordunuz? –

+14

Tüm nesneyi değiştirirseniz, gözlemciler bilgilendirilmeyecek, değil mi? –

İlgili konular