Bir kurs listesi seçim aracı uygulamak için Knockout kullanıyorum. Verileri (MVC3/Razor) doldurmak için aşağıdaki yaklaşımı kullanıyorum; böylece, viewmodel başlangıçta dolduğunda, her bir KO dizisiyle (yani, CourseList, ScheduleList) çalışmayla ilgili hiçbir sorunum yok. Ancak, sunucudaki ilk yük sıfır satır döndürdüğünde, viewmodel 'ScheduleList' özelliğinin boş olduğu anlamına gelir, bu durumda .push() veya .removeAll() gibi herhangi bir yöntemi çağırmak mümkün değildir. Muhtemelen bu, gözlemlenebilir dizinin hiçbir zaman yaratılmayacağı bir şey olmadığı için yaratılmadığı anlamına gelir. Model doldurulduğunda, ScheduleList özelliği bir Liste ile doldurulur. MVC eylemi boş olarak döndürdüğünde bunu başlatmanın en iyi yolu nedir? Bunu ele veren bir jsFiddle var, ancak 'create' seçeneğini kullanmaya çalıştığımda, tüm modelimi boş bırakıyor. Sözdizimi 'oluşturma' seçeneğinin ne olduğundan emin değilim. jsFiddle burada: http://jsfiddle.net/rniemeyer/WQGVC/Başlangıç görünümü modeli boş olduğunda Knockout viewmodel nasıl başlatılır
// Get the data from the server
var DataFromServer = @Html.Raw(Json.Encode(Model));
// Data property in viewmodel
var data = {
"CourseList": DataFromServer.CourseList ,
"ScheduleList": DataFromServer.ScheduleList
};
$(function() {
// Populate Data property
viewModel.Data = ko.mapping.fromJS(data);
// ko.applyBindings(viewModel, mappingOptions);
ko.applyBindings(viewModel);
});
ilk sayfa yükleme ScheduleList doldurmuyor, sonra aşağıdaki kod bir hata atar. İlk Sayfa yükleme verilerini içeriyorsa, o zaman bunu belli vermek, sizin haritalama parametreleri büyük oluşturma yapmak kurma vb
var oneA= 'abc';
// push not working
this.Data.ScheduleList.push(oneA);
Teşekkürler! Bu tam olarak ne oluyor ve bu sorunu çözüyor. Ben baktım jsFiddles çoğu mülk (dizinin kendisi) üzerinde hareket eden ilginç, bu yüzden bu geri çağırma oluşturmaya çalışmamıştı. Ray'ın önerdiği diğer yaklaşım da işe yarıyor. –