2
我已经得到KO几个简单的步骤,发挥好与asp.net的MVC机智扩展Knockout.js视图模型:在asp.net MVC应用程序
var jsonModel = @Html.Raw(Json.Encode(Model));
model = ko.mapping.fromJS(jsonModel);
ko.applyBindings(model);
瞧,我现在可以直接在KO绑定中使用我的serverside模型。
<input type="text" data-bind="value: Name" />
如果我想延长主模型,这是非常简单的:
model.blurevent = function(o,x) {
var src = x.srcElement;
alert(src.value);
};
接下来,我想扩展模型的子类。例如,我的模型有一个拥有雇主集合的Resume类。我想将客户端事件添加到雇主类。
所以,如果这只是一个纯JavaScript的解决方案,我可以做这样的事情:
function Employer() {
this.ShowDetais = function() { this.DetailsVisible(true); }
}
,但是,因为我序列化从服务器整个模型(#1以上),用人单位没有定义。相反,串行只是创建一个匿名收藏:
model = {
"Resume" : {
...
"Employers": [
{
"ResumeEmployerID": 0,
"Name": "Employer 1",
"Title": null,
"EmployedFrom": "\/Date(-62135578800000)\/",
"EmployedTo": null,
"GeneralDescription": null,
"ProjectHighlights": {
}
}
}
正如你看到的,默认JSON序列,它并没有刻意去定义模型分别使用每个类(一个会做这样的方式纯JavaScript应用程序),所以无法在客户端上扩展子类。
我想知道这是否已解决?有没有一个序列化器可以创建更加可扩展的更正式的模型?
我正在使用这个插件。这就是“model = ko.mapping.fromJS(jsonModel);”是..仍然没有看到一个直接的方式来扩展子模型。我看到文档确实触及了自定义对象创建..我将不得不深入了解一下 – 2013-02-10 19:38:40
好的我在“使用自定义对象构造”中看到创建“”部分,我可能可以完全按照我的需要进行操作。今天晚些时候会做一些概念验证,谢谢。 – 2013-02-10 19:45:23