我有一个组件,用于在其子元素周围添加容器。该组件在其他组件中使用没有任何问题。但我希望能够使用这样的方面:
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="detailTitle" />
<cc:facet name="header"/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<li class="mvkcomp listItem listDetailToggle">
<ezcomp:container>
<div class="listItemBody">
<div class="header">
<!-- Facet not being rendered -->
<cc:renderFacet name="header" />
<a href="#">Show/hide #{cc.attrs.detailTitle}</a>
</div>
<div class="detail">
<cc:insertChildren />
</div>
</div>
</ezcomp:container>
</li>
</cc:implementation>
但这不会渲染任何内容。如果<cc:renderFacet>
它按预期工作已移至 <ezcomp:container>
之外。有没有我没有看到的替代方案,或者我只需移动 li
和ezcomp:container
在组件之外使其工作?无论如何,这是首选的选择吗?
哦还有<cc:insertChildren>
按预期工作。对我来说,这似乎很奇怪,其中一个会失败,而另一个却不会。
请您参考如下方法:
我选择处理这个问题的方法是将包装元素实现为模板。然后,我使用 ui:decorate 在复合组件内输出该模板。原始包装器现在仅在插入其子级之前输出模板。