【发布时间】:2015-02-06 15:53:35
【问题描述】:
有没有办法配置Knockout component 来替换容器元素,而不是将其内容嵌套在容器元素中?
例如,如果我有一个使用以下模板注册为my-custom-element 的自定义组件:
<tr>
<p>Hello world!</p>
</tr>
是否可以这样使用组件:
<table>
<tbody>
<my-custom-element></my-custom-element>
</tbody>
</table>
最终产品是这样的:
<table>
<tbody>
<tr>
<p>Hello world!</p>
</tr>
</tbody>
</table>
而不是这个:(Knockout 默认渲染组件的方式)
<table>
<tbody>
<my-custom-element>
<tr>
<p>Hello world!</p>
</tr>
</my-custom-element>
</tbody>
</table>
Based on the answer to this question,这个功能似乎内置在模板引擎中,我假设在渲染组件模板时也会使用它。
有没有办法指定组件应该使用renderMode 或replaceNode 呈现?
我知道“虚拟元素”语法,它允许在 HTML 注释中定义组件:
<table>
<tbody>
<!--ko component { name: 'my-custom-element' }--><!--/ko-->
</tbody>
</table>
但我真的不喜欢这种语法 - 在评论中编写真正的代码感觉像是一种肮脏、肮脏的 hack。
【问题讨论】:
-
听起来Rendering a named template 就是您要找的东西。一般而言,Web 组件是一个 DOM 节点,它是子节点的影子。它不打算被替换,因为在这种情况下这个概念本身就被破坏了。
标签: javascript knockout.js web-component knockout-components knockout-templating