2016-05-23 34 views
2

我有一个自定义元素,它定义了具有各种可绑定默认选项的通用UI构件框架,用于为主体添加一些其他“工具栏”选项和通用<content />的模板部件。Aurelia中的嵌套自定义元素未按预期方式呈现

然后我有一些自定义元素的一些管理功能。后一个元素应该表现为一个小部件,它也有各种模板部分。

但是,如果我尝试将以前的Widget元素嵌入到后一个管理元素中,则不会呈现任何内容。

下面是一个简化的例子:

例如块(窗口小部件)元件

<template> 
    <div style="padding: 10px; background-color: #bbffff"> 
    <content></content> 
    </div> 
</template> 

例如列表(管理员)元件

<template> 
    <require from="./eg-block"></require> 
    <eg-block> 
    <div>Start of List</div> 
    <content></content> 
    <template replaceable part="list-part">Default List Part</template> 
    <div>End of List</div> 
    </eg-block> 
</template> 

包含页面

<template> 
    <require from="./eg-list"></require> 
    <eg-list> 
    <template replace-part="list-part">Replaced List Part content</template> 
    <div>Replaced regular content</div> 
    </eg-list> 
</template> 

我希望的,结果是:

<div style="padding: 10px; background-color: #bbffff"> 
    <div>Start of List</div> 
    <div>Replaced regular content</div> 
    <div>Replaced List Part content</div> 
    <div>End of List</div> 
</div> 

但相反,它给了我:

<div style="padding: 10px; background-color: #bbffff"> 
    <div>Start of List</div> 
    <div>End of List</div> 
    <div>Default List Part</div> 
</div> 

所以也没有呈现列表的内容或更换模板一部分在包含页面中指定。但是另外,列表的模板部分的默认内容实际上在列表后呈现为

这是预期的行为?如果是这样,是否有任何方法可以保留admin/list元素中的widget/block元素的使用,但要让它以我希望的方式呈现?

回答

0

我主要是复制/粘贴this question我的答案在这里,但这里有云:

我首先要说的内容投影在奥里利亚RC1彻底改变(和好)前言这个答案。我们正在转向基于插槽的内容投影以匹配最新版本的shadow DOM规范。该规范比Aurelia目前的基于选择器的设置(基于Shadow DOM规范的早期版本)功能强大得多。这是我们现在和Aurelia全部1.0之间计划的唯一突破性变化。

所以我告诉你的一切很快就会过时。

与此同时,自定义元素视图中的元素需要位于模板的根目录下。至于为什么Aurelia采取这种方式,这是一个bug :-)它已被修复在新的implementation

我们刚刚发布了blog post关于新的插槽实施,如果你想看看事情会如何工作。

+0

太好了。我在这里发布后不久,我就看到那篇文章到达博客!会给它一个旋风 –

相关问题