Замените контейнерный элемент при использовании компонента Knockout
Есть ли способ настроитьКомпонент нокаута взамещать элемент контейнера вместо того, чтобы вкладывать его содержимое в элемент контейнера?
Например, если у меня есть пользовательский компонент, зарегистрированный как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>
На основании ответа на этот вопросПохоже, что эта функциональность встроена в шаблонизатор, который, как я полагаю, также используется при визуализации шаблонов компонентов.
Есть ли способ указать, что компонент должен отображаться сrenderMode
изreplaceNode
?
Мне известен синтаксис «виртуального элемента», который позволяет определять компоненты внутри комментария HTML:
<table>
<tbody>
<!--ko component { name: 'my-custom-element' }--><!--/ko-->
</tbody>
</table>
но мне действительно не нравится этот синтаксис - написание реального кода внутри комментария кажется грязным, грязным хаком.