5

我使用 KnockoutJs,它很棒,但我需要一件事,但我想不通。

  1. 我发出一个返回 JSON 数据的 get 请求。与我的 Knockout ViewModel 相同的属性。
  2. 我使用映射插件将我的 JSon 结果转换为 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());
    };
};

我的 C# 模型

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

public class MySubViewModel
{
    public int Id { get; set; }
}

我的服务器结果

return new MyViewModel
        {
            Id = 1,
            SubModels = new List<MySubViewModel>
                                {
                                new MySubViewModel { Id = 1 },
                                new MySubViewModel { Id = 2 }
                                }
        };
4

1 回答 1

3

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

于 2012-07-20T17:48:20.153 回答