我已经让KO与asp.net mvc玩得很好,只需几个简单的步骤:
var jsonModel = @Html.Raw(Json.Encode(Model));
model = ko.mapping.fromJS(jsonModel);
ko.applyBindings(model);
<input type="text" data-bind="value: Name" />
如果我想扩展主模型,那很简单:
model.blurevent = function(o,x) {
var src = x.srcElement;
alert(src.value);
};
接下来,我想扩展模型的子类。例如,我的模型有一个Resume类,它有Employers集合。我想将客户端事件添加到Employer类。
所以,如果这只是一个纯粹的JavaScript解决方案,我可以做这样的事情:
function Employer() {
this.ShowDetais = function() { this.DetailsVisible(true); }
}
但是,由于我从服务器序列化整个模型(上面的#1),因此未定义Employer。相反,序列化程序只是创建一个匿名集合:
model = {
"Resume" : {
...
"Employers": [
{
"ResumeEmployerID": 0,
"Name": "Employer 1",
"Title": null,
"EmployedFrom": "\/Date(-62135578800000)\/",
"EmployedTo": null,
"GeneralDescription": null,
"ProjectHighlights": {
}
}
}
如您所见,使用默认的json序列化程序,它无需单独定义模型中使用的每个类(在纯javascript应用程序中执行此操作的方式),因此无法扩展子类客户端。
我想知道这是否已经解决了?是否有一个序列化程序可以创建一个更具可扩展性的更正式的模型?
答案 0 :(得分:1)