Knockout模板没有加载?

时间:2013-06-10 21:01:54

标签: javascript jquery templates knockout.js

我有以下模板:

<script type="text/html" id="testTemplate">
    <div class="itemName">Hello World</div>
    <div class="itemDescription">This is a template that pops up</div>
</script>

我在这样的onClick事件中调用它:

        $("<div/>", {
            class: "itemView",
            id: name,
            "data-bind": "template: { name: 'testTemplate' }"
        }).appendTo("body").draggable();

当我点击按钮查看该项目时,div会弹出,​​但它是空的。 HTML只是一个空的DIV:

<div class="itemView" id="Item1" data-bind="template: { name: 'testTemplate' } "></div>

我错过了什么?

更新我已经大大简化了这个问题

2 个答案:

答案 0 :(得分:2)

我认为你需要再次调用ko.applyBindings()。但是Knockout中的常用方法是将div放在HTML中并使用visible绑定来控制div是否呈现。

答案 1 :(得分:0)

就个人而言,这并不是我对这种功能的看法。

我会在页面上显示div但隐藏。

CSS

.itemView{ display: none; }
.show{ display: block; }

HTML

<div class="itemView" id="Item1" data-bind="with: myObject, css: { 'show': (myObject() !== null) }">
    <div class="itemName">Hello World</div>
    <div class="itemDescription">This is a template that pops up</div>
</div>

然后,当您举起click事件时,使用所选对象填充myObject对象。淘汰赛将照顾一切。