2

我有一个组件,用于在其子元素周围添加一个容器。该组件在其他组件中使用没有任何问题。但我希望能够使用这样的方面:

<!-- 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>按预期工作。对我来说似乎很奇怪,一个会失败,但另一个不会。

4

1 回答 1

2

我选择处理此问题的方法是将包装器元素实现为模板。然后我使用 ui:decorate 在复合组件内输出该模板。原来的包装器现在只在插入它的孩子之前输出模板。

于 2013-02-08T12:38:34.277 回答