这就是我想要构建我的html的方式
<a href="#">John <i class="person"></i></a>
使用 knockout.js,这就是我所做的。
<a data-bind="text:name"><i class="person"></i></a>
正如您可以猜到的那样,由于文本绑定,锚的整个元素(不仅仅是文本)都被删除了,在这种情况下,锚内的整个标签都被删除了。我的解决方案如下。
<a data-bind="html: name() + '<i class="person"></i>'"></a>
在数据绑定中使用 html 的字符串连接是一种解决方案,但它有两个很大的缺点。'name' 属性不安全,因此我们可以进行 html 注入。偶尔在数据绑定属性中编写 html 很糟糕。
另一种解决方案是。
<a href="#"><span data-bind="text:name"></span><i class="person"></i></a>
我知道我们为解决方案引入了新的 html 标记。这是我发现的最好的。
在 knockout.js 中这个问题的众所周知的解决方案是什么?
我们可以指定仅通过参数将文本而不是其中的整个元素更新为文本绑定吗?
还是更好的解决方案?