我正在使用淘汰赛 js 模板绑定功能将项目集合呈现给元素:
<script type="text/javascript">
ko.applyBindings(new function () {
this.childItems = [{ Text: "Test", ImageUrl: "Images/Image.png" }];
});
</script>
<script type="text/html" id="template">
<div class="childItem" data-bind="attr: { title: Text }">
<img data-bind="attr: { src: ImageUrl }" />
</div>
</script>
<div class="childSelector" data-bind="template: { name: 'template', foreach: childItems }">
</div>
单击时,子项被克隆并放置到另一个元素中:
$(".childSelector").on("click", ".childItem", function () {
var clone = $(this).clone()[0];
ko.cleanNode(clone);
$(".targetNode").append(clone);
});
问题是当源数据发生变化,模板重新绑定到新数据时,会抛出如下错误:
未捕获的错误:无法解析绑定。消息:ReferenceError:文本未定义;绑定值:attr: { title: Text }
我发现另一个帖子建议使用ko.cleanNode(element)
删除淘汰赛的绑定,但这并没有解决我的问题。
有没有办法删除克隆元素上的淘汰赛绑定以防止重新绑定时出现此错误?如果不是,我将通过从单击的元素中提取所需的数据来“手动”克隆元素。
这是我正在做的一个简单示例