来自JS的Knockoutjs Mapping保留方法

dkn*_*ack 5 asp.net-mvc knockout-mapping-plugin knockout.js

我使用KnockoutJs它很棒,但我需要一件事,我无法理解它.

  1. 我发出一个返回JSon数据的get请求.像我的Knockout ViewModel一样的属性.
  2. 我使用映射插件将我的JSon结果转换为Knockout viewModel.

这工作正常但是,当然,我失去了我的knockout viewModel中定义的方法.

如何防止这种情况,以便我可以使用映射并保留我的方法?

非常感谢你!

更新

这只是一个样本.也许有一些语法错误,但它应该显示我想要做的事情.

我的JavaScript

var MyViewModel = function () {
    var self = this;

    self.id = ko.observable();
    self.subModels = ko.observableArray();

    self.doSomething = function () {
        alert("Hello from " + self.id());
    };
};

var MySubViewModel = function () {
    var self = this;

    self.id = ko.observable();

    self.doSomething = function () {
        alert("Hello from " + self.id());
    };
};
Run Code Online (Sandbox Code Playgroud)

我的c#模特

public class MyViewModel
{
    public int Id { get; set; }
    public List<MySubViewModel> SubModels { get; set; }
}

public class MySubViewModel
{
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的服务器结果

return new MyViewModel
        {
            Id = 1,
            SubModels = new List<MySubViewModel>
                                {
                                new MySubViewModel { Id = 1 },
                                new MySubViewModel { Id = 2 }
                                }
        };
Run Code Online (Sandbox Code Playgroud)

Joh*_*apa 3

如果您使用 ko 映射插件,您可以将 json 对象映射到视图模型内的模型。例如,如果您要获取人员列表,您可以将 json 映射到 viewModel.people。这样你就可以保持视图模型的其他属性不变。