2013-07-09 7 views
26

Verilerim her zaman sunucumdan veri aldığımda, gözbebekümdeki verileri atmak istiyorum. Eğer içeren myArray ile sona erecek böylece iki çağrı arasında hiçbir fark yoktur bakış Sonuçta açıdanremoveAll vs knockoutjs içinde [] ile boş bir dizi

self.myArray.removeAll(); 
+0

Demo ve eskisine tüm abonelikler . – DCoder

+0

@DCoder üzgünüm bir yazım hatası yaptım ... lütfen tekrar bir göz atın. – msfanboy

+0

Nasıl uygulandığını görmek için Knockout'un kaynak kodunu okuyabilirsiniz. Her ikisi de diziyi temizler, fark edilen tek fark, döndükleri şeydir - ilk seçenek gözlemlenebilir olanın kendisini döndürür, ikincisi eski değerleri döndürür. – DCoder

cevap

50

vs

self.myArray([]); 

arasındaki işlevsellik farkı, nedir

eleman yok. (Farklı dönüş değerleri hakkında umurumda değil ise)

Ancak orada bir küçük fark:

self.myArray([]); 

olacak yeni oluşturulan boş dizi temel dizi örneği değiştirir.

self.myArray.removeAll(); 

irade yatan diziden ama tüm öğeleri kaldırır iken

o dizi oluşumu tutacak. Yani

Birden ko.observableArray iki çağrı arasında differnce görebilen aynı underlaying dizisi kullanarak varsa: kaybolur ilki yeni gözlemlenebilir oluşturur JSFiddle.

+0

Örnek için teşekkürler. – msfanboy

+0

Bellek perspektifinden 'removeAll()' daha mı iyidir? Örneğin. diziye tutunan herhangi bir şeyden tüm belleği serbest bırakacak mı? –