【问题标题】:Knockout template not loading?淘汰赛模板未加载?
【发布时间】:2013-06-10 21:01:53
【问题描述】:

我有以下模板:

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

我错过了什么?

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

【问题讨论】:

    标签: javascript jquery templates knockout.js


    【解决方案1】:

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

    【讨论】:

    • 可能打开了无数个项目...但我会再次尝试应用绑定,谢谢。
    • 这就是全部。谢谢。
    【解决方案2】:

    就我个人而言,我不会这样做。

    我希望 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 对象。淘汰赛会处理一切。

    【讨论】:

    • 啊,我没有意识到这是多个项目。让我想想
    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2017-08-15
    • 2018-09-05
    • 2011-08-11
    • 2012-01-12
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多