来自js的Knockout.js映射和模板使用

来自js的Knockout.js映射和模板使用,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,主要的概念如下-我们有主状态对象,它包含多个部分,每个部分都有自己的数据和类型。我想根据截面类型显示每个截面数据。主要对象如下所示: var data = { state: { sections: [{ section: { Id: "1", Type: "Text", Version: 2, Data: ["one", "two"] } }, { section: {

主要的概念如下-我们有主状态对象,它包含多个部分,每个部分都有自己的数据和类型。我想根据截面类型显示每个截面数据。主要对象如下所示:

var data = {
  state: {
    sections: [{
      section: {
        Id: "1",
        Type: "Text",
        Version: 2,
        Data: ["one", "two"]
      }
    }, {
      section: {
        Id: "2",
        Type: "Text",
        Version: 1,
        Data: ["one", "two"]
      }
    }]
  }
};

我正试图为每种节类型使用敲除映射和模板来实现这一点,但我真的不知道如何做到这一点。我只有这个-。有什么建议吗

您可以通过提供一个方法动态选择模板名称,该方法获取
foreach
循环的当前项并返回模板名称字符串。()

下面是代码中“模板提供程序方法”的示例:

更新的数据绑定

<ul data-bind="template: { name: getTemplateForSection, foreach: sections, as: 'obj' }"></ul>
我已经把你的提琴叉好了,把我提议的例子也放进去了

function StateModel(data) {
  ko.mapping.fromJS(data, mapping, this);

  this.getTemplateForSection = function(sectionModel) {
    var section = sectionModel.section;

    switch (section.Type()) {
      case "Text":
        return "Text-template";
      default:
        return "Error-template";
    }
  }
};