Ben ile VM var şu: Benim GörünümündeObservableArray() öğesini ekleyin ve eklenene kadar bekleyin?
var myArray = ko.observableArray(),
....
addItem = function(data) {
myArray.unshift(data);
},
ben buna bağlanan bazı HTML vardır:
<div data-bind="foreach: myArray">
....<label data-bind:="attr: { id: 'myLabel_' + name }"></Label>
</div>
Her şey harika çalışıyor - Ben addItem çağırdığınızda bir öğe eklendiğinde alır işlev obserableArray() ve Nakavt benim uygun HTML'yi ekler.
Şu anda karşı karşıya olduğum sorun şu ki, sadece düz HTML kullanmak yerine, daha karmaşık bir denetim kullanmayı deniyorum (Kendo ızgarası gibi). NewItem'i çağırdığımda Izgarayı başlatmak için bir Javascript yöntemini çağırmam gerekiyor. Ama eğer bunu yaparsam, işe yaramıyor (Sanırım Knockout'un ne yapması gerektiğini bitirmesi, Kendo kontrolünün yapması gerekeni yapması gerektiğinde).
şu çalışmaz:
var myArray = ko.observableArray(),
....
addItem = function(data) {
myArray.unshift(data);
var test = $('#myLabel_nameOne');
// Kendo specific code to setup test
},
ben konsoldan aynı Kendo özel kodu çalıştırırsanız - bu iyi çalışıyor. SetInterval kullanırsam, bu da işe yarayacak.
Tüm şablona bağlanabileceğim bir 'afterRender' olduğunu biliyorum - ancak yalnızca UI'nin bu gözlemlenebilir Diziye tek bir öğe ekledikten sonra ne zaman yapıldığını bilmek istiyorum.
'Bu gerçekten eklenene kadar bekle, sonra git diğer şeyler mi?' Demenin doğru yolu nedir? Veya 'Bunu ekle, ve UI hazır olduğunda, bu işlevi benim için ara' '?
Her şey [docs ...] (http://knockoutjs.com/documentation/foreach-binding.html#note-7-post-processing-or-animating-the-generated-dom-elements) – Tyblitz