Knockout.js 剔除数据绑定嵌套的html元素
我有一个h2标记,它将文本属性数据绑定到一个模型值,在里面我有一个span标记,它也是一个将文本属性数据绑定到模型值的span标记 但是,当绑定模型时,span将被替换,是否有任何方法附加htmlKnockout.js 剔除数据绑定嵌套的html元素,knockout.js,Knockout.js,我有一个h2标记,它将文本属性数据绑定到一个模型值,在里面我有一个span标记,它也是一个将文本属性数据绑定到模型值的span标记 但是,当绑定模型时,span将被替换,是否有任何方法附加html 您当前的代码将被覆盖,因为“文本”绑定为该元素设置了innerText(或textContent),所以您的h2文本绑定将覆盖任何现有的嵌入式html(如span) 您可以这样做: <h2> <span data-bind="text:firstName"></s
您当前的代码将被覆盖,因为“文本”绑定为该元素设置了innerText(或textContent),所以您的h2文本绑定将覆盖任何现有的嵌入式html(如span) 您可以这样做:
<h2>
<span data-bind="text:firstName"></span>
<span data-bind="text:lastName "></span>
</h2>
通常情况下,您会希望更改HTML以在这种情况下正常工作。但是,如果不可能,那么可以使用自定义绑定为您插入跨度
就像:
ko.bindingHandlers.insertText = {
init: function(element, valueAccessor) {
var span = document.createElement("span"),
firstChild = element.firstChild;
element.insertBefore(span, firstChild);
ko.applyBindingsToNode(span, { text: valueAccessor() });
}
};
示例:对于最新的敲除,您可以在h2文本中使用虚拟元素,类似于John Earles解决方案,但这意味着您可以将姓氏与名字分开
<h2>
<!-- ko text: firstName --><!-- /ko -->
<span data-bind="text: lastName"></span>
</h2>
是的,我理解这一点,但我现在无法更改html结构。是否可以在不更改html结构的情况下执行此操作。