Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 剔除数据绑定嵌套的html元素_Knockout.js - Fatal编程技术网

Knockout.js 剔除数据绑定嵌套的html元素

Knockout.js 剔除数据绑定嵌套的html元素,knockout.js,Knockout.js,我有一个h2标记,它将文本属性数据绑定到一个模型值,在里面我有一个span标记,它也是一个将文本属性数据绑定到模型值的span标记 但是,当绑定模型时,span将被替换,是否有任何方法附加html 您当前的代码将被覆盖,因为“文本”绑定为该元素设置了innerText(或textContent),所以您的h2文本绑定将覆盖任何现有的嵌入式html(如span) 您可以这样做: <h2> <span data-bind="text:firstName"></s

我有一个h2标记,它将文本属性数据绑定到一个模型值,在里面我有一个span标记,它也是一个将文本属性数据绑定到模型值的span标记

但是,当绑定模型时,span将被替换,是否有任何方法附加html


您当前的代码将被覆盖,因为“文本”绑定为该元素设置了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结构的情况下执行此操作。