http://jsfiddle.net/scottbeeson/SRUKN/24/
我正在使用它来创建一个新的div:
$("<div/>", {
class: "itemView",
id: name,
"data-bind": "template: { name: 'tmplItemView' }"
}).appendTo("body")
模板具有正确的数据绑定
<script type="text/html" id="tmplItemView">
<div class="itemHeader" data-bind="text: name">Item Name</div>
<span id="itemClose" class="closeWindow"><i class="icon-remove">X</i></span>
</script>
但是当我触发创建时,它会在DOM中创建一个空div。如果我之后立即应用了绑定,模板似乎正常工作(即DIV不为空),但它会清除整个视图模型。
之前我已经解决了这个问题,但我认为现在的区别在于我正在使用jquery函数来捕获点击而不是使用knockout的点击绑定。
答案 0 :(得分:1)
我看了一眼,找到了解决方法。请参阅:http://jsfiddle.net/SRUKN/26/
function createItemDiv(item) {
console.log('Creating div from template');
var $el = $("<div/>", {
class: "itemView",
id: item.name(),
"data-bind": "template: { name: 'tmplItemView' }"
});
$el.appendTo("body");
$el.draggable();
ko.applyBindings(item, $el.get(0));
}
基本上,我只是通过传递要绑定到的VM以及目标元素来确保applyBindings
调用更具针对性。