繁体   English   中英

在ASP.NET MVC应用程序中扩展Knockout.js ViewModel

[英]Extending Knockout.js ViewModel in asp.net mvc application

我已经通过几个简单的步骤使KO与asp.net mvc玩得很好:

  1. var jsonModel = @Html.Raw(Json.Encode(Model));
  2. model = ko.mapping.fromJS(jsonModel);
  3. ko.applyBindings(model);

瞧,我现在可以直接在KO绑定中使用我的服务器端模型。

<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应用程序中执行此操作的方式),因此无法在客户端上扩展子类。

我想知道是否已解决? 是否有一个序列化器可以创建更正式的模型,并且可以扩展?

我认为该插件有望满足您的需求

敲除映射

它应该深度映射您的对象

我认为这个问题有一个很好的例子? Knockout.js和映射插件未深度翻译

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM