0

我有以下模板:

<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>

我错过了什么?

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

4

2 回答 2

2

我认为您需要再次调用 ko.applyBindings() 。但是在 Knockout 中通常的做法是将 div 放在你的 HTML 中,并使用可见绑定来控制 div 是否被渲染。

于 2013-06-10T23:46:09.553 回答
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>

然后,当您引发单击事件时,myObject使用所选对象填充对象。淘汰赛将照顾一切。

于 2013-06-11T10:25:40.840 回答