我的 MVC 剃刀视图呈现此标记:
function existingNamingsViewModel() {
var self = this;
var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model));
self.ExistingNamings = ko.observableArray(initialData);
}
ko.applyBindings(new existingNamingsViewModel(), document.getElementById("namings-control"));
进入正确的 JS 序列化代码,initialData
变量初始化为:
var initialData = [{"TypeName":"Orders","NameBlocks":["{intInc_G}","/","{intInc_D}","/02/-","{yy}"],"ParamBlocks":["2296","","1","",""]}];
在应用 ko 绑定后,生成的 html 采用可编辑网格的形式:
每当用户更改这些输入字段中的数据时,我需要 knockoutJS 能够自动更新视图模型。但由于视图模型是从简单的 JSON 对象初始化的,NameBlocks
而ParamBlocks
不是ko.observableArray
. 我需要他们。我如何实现这一目标?
PS 一个想法是进行更复杂的初始化,其中 razor 仅序列化Name
/ParamBlocks
数组,并ExistingNamings
通过 javascript 代码手动填充数组,创建一个自定义命名类对象,该对象Name
/ParamBlocks
包装到ko.observableArray
. 但这是唯一的方法吗?