替换knockout.js中普通div的模板元素

时间:2016-07-21 12:35:45

标签: knockout.js knockout-3.2

我试图在不使用template标记的情况下使用模板,因为任何版本的IE都不支持此模板。

而不是:

<template id="component-input-slider">
    <span data-bind="text: display"></span>
</template>

我试图使用:

<div class="hidden" id="component-input-slider">
    <span data-bind="text: display"></span>
</div>

在第二种情况下,我收到错误:display is not defined

对此最佳解决方案是什么?

我尝试在模板包装器和it seems to work on the reproduction中添加data-bind: if: $data,但不在我的真实应用中。

1 个答案:

答案 0 :(得分:1)

与上面的评论一样,您可以使用脚本标记来创建如下模板:

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div>
  <table>
    <tbody data-bind="template: { name: 'table-template'}"></tbody>
  </table>
</div>

<script id="table-template" type="text/html">
    <!--ko foreach: data-->
        <tr data-bind="data: $data">
            <td data-bind="text: category"></td>
            <td data-bind="text: description"></td>
        </tr>
  <!--/ko-->
</script>

这是一个有效的JSfiddle https://jsfiddle.net/gmbrx2vd/4/