【问题标题】:Knockoutjs Mapping fromJS keep methodsKnockoutjs Mapping fromJS 保持方法
【发布时间】:2012-07-19 23:44:37
【问题描述】:

我使用 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 }
                                }
        };

【问题讨论】:

  • 您能告诉我们您是如何进行映射或链接到 jsfiddle 的吗?
  • jsfiddle 不太可能。我试过ko.mapping.fromJSONko.mapping.fromJS。问题是,如何正确地做到这一点。
  • 每次使用任何 ko.mapping.fromJS 映射更改模型数据时,一个选项是重新应用模型绑定。

标签: asp.net-mvc knockout.js knockout-mapping-plugin


【解决方案1】:

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

【讨论】:

  • 好的,对。但是,如果我希望 people 模型有一个方法,我该怎么办? myViewModel.people[0].someMethod()
  • 好的。你能提个琴,我可以给你看一些选择吗?
  • 完成,希望你能理解我的问题。非常感谢您。
  • 这是同样的问题,由 RPNiemeyer 回答。 stackoverflow.com/questions/8401799/…
猜你喜欢
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 2012-08-03
  • 2016-01-13
  • 2012-04-25
  • 2019-04-10
  • 2020-02-06
  • 2017-06-27
相关资源
最近更新 更多