将List Item附加到结尾,Knockout Js模板绑定

时间:2015-02-17 20:31:12

标签: knockout.js

在下面的小提琴中 我希望 gokul 列表项位于顶部。

尽可能不修改DOM

Fiddle link

    <div id="test">
    <li>gokul</li>
</div>
<script id="someTemplate" type="text/html">
    < li data - bind = "text: name" > < span class = "remove"
    data - bind = "text :name" > Remove from < /span></li >
</script>

var data = [{
    name: "one"
}, {
    name: "two"
}];

ko.applyBindingsToNode(document.getElementById("test"), {
    template: {
        name: 'someTemplate',
        foreach: data
    }
});

1 个答案:

答案 0 :(得分:1)

这在Knockout下是不可能的,更糟糕​​的是你链接的JSFiddle使用的是Knockout 2.0.0。在以后的版本中,使用模板时绑定的节点的所有内容都将被清除 - 您将丢失&#34; gokul&#34;元素绑定时。

您需要使用在现有LI之后插入的虚拟模板/ foreach绑定。如果您无法修改正在传递的HTML,则可以动态完成此操作。

使用现有的HTML ...

var data = [ { name: "one" }, { name: "two" } ];

var element = document.getElementById("test");
var startForEach = document.createComment("ko template: {name: 'someTemplate', foreach: $data }");
var endForEach = document.createComment("/ko");

element.appendChild(startForEach);
element.appendChild(endForEach);

ko.applyBindings(data, document.getElementById("test"));