使用knockout通过条件传递模板名称

时间:2014-04-18 23:11:20

标签: javascript knockout-2.0

如果我有一个带有类容器的div部分,我需要根据所选的下拉列表填充模板。我怎么能用knockout.js做到这一点。

    <div class="container"></div>

    <!--Dropdown-->
    <select>
      <option value="A">A</option>
      <option value="B">B</option>
      <option value="C">C</option>
    </select>

    <!--Templates-->
    <script type="text/html" id="A-template">
      <span data-bind="text:Value"></span>
    </script>
    <script type="text/html" id="B-template">
      <span data-bind="text:Value"></span>
    </script>
    <script type="text/html" id="A-template">
      <span data-bind="text:Value"></span>
    </script>

1 个答案:

答案 0 :(得分:1)

您可以使用计算来计算模板名称:

this.SelectionTemplate = ko.computed(function() {
    return self.Value() + "-template";
});

您的模板绑定如下所示:

data-bind="template: { name: SelectionTemplate, data: $root }"

这是一个JSFiddle示例: http://jsfiddle.net/6Shce/1/