我正在使用 Knockout 来实现课程列表选择工具。我正在使用下面的方法来填充数据(MVC3/Razor),因此当最初填充视图模型时,我使用每个 KO 数组(即 CourseList、ScheduleList)都没有问题。但是,当来自服务器的初始加载返回零行时,这意味着视图模型的“ScheduleList”属性为空,则无法调用任何方法,例如 .push() 或 .removeAll()。大概这意味着 observable 数组从未被创建,因为没有任何东西可以填充它。填充模型后,ScheduleList 属性将填充一个列表。当 MVC 操作将其返回为空时,实例化它的最佳方法是什么?有一个 jsFiddle 似乎可以解决它,但是当我尝试使用“创建”选项时,它使我的整个模型空白。我不确定“create”选项的语法是什么。jsFiddle 在这里:http://jsfiddle.net/rniemeyer/WQGVC/
// 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);
});
当初始页面加载未填充 ScheduleList 时,以下代码将引发错误。如果初始页面加载包含数据,那么您可以调用 .removeAll() 和 .push() 等。
var oneA= 'abc';
// push not working
this.Data.ScheduleList.push( oneA );