Aurelia 中的嵌套自定义元素未按预期呈现
Nested Custom Elements in Aurelia not rendering as expected
我有一个自定义元素,它定义了一个具有各种可绑定默认选项的通用 UI 小部件框架,一个用于添加一些额外 'toolbar' 选项的模板部分和 general-purpose <content />
对于 body.
然后我有另一个用于某些管理功能的自定义元素。后一个元素应该将自己呈现为一个小部件,并且它也有各种模板部分。
但是,如果我尝试将前一个小部件元素嵌入到后一个管理元素中,none 将呈现内容。
这是一个简化的例子:
eg-block(小部件)元素
<template>
<div style="padding: 10px; background-color: #bbffff">
<content></content>
</div>
</template>
eg-list(管理员)元素
<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 元素的使用,但让它以我希望的方式呈现?
我主要是 copy/pasting 来自 的回答,但这里是:
让我先说明一下 Aurelia RC1 中的内容投影正在完全改变(并且变得更好)。我们正在转向基于插槽的内容投影,以与最新版本的影子 DOM 规范相匹配。该规范比 Aurelia 目前拥有的基于选择器的设置(基于 Shadow DOM 规范的早期版本)强大得多。这是我们从现在到完整的 Aurelia 1.0 之间计划的唯一重大更改。
所以我告诉你的一切很快就会过时。
同时,自定义元素视图中的元素需要位于模板的根部。至于为什么 Aurelia 会这样,那是 bug:-) It has been fixed in the new implementation.
我们刚刚发布了关于新插槽实现的 ,如果您想了解它是如何工作的。
我有一个自定义元素,它定义了一个具有各种可绑定默认选项的通用 UI 小部件框架,一个用于添加一些额外 'toolbar' 选项的模板部分和 general-purpose <content />
对于 body.
然后我有另一个用于某些管理功能的自定义元素。后一个元素应该将自己呈现为一个小部件,并且它也有各种模板部分。
但是,如果我尝试将前一个小部件元素嵌入到后一个管理元素中,none 将呈现内容。
这是一个简化的例子:
eg-block(小部件)元素
<template>
<div style="padding: 10px; background-color: #bbffff">
<content></content>
</div>
</template>
eg-list(管理员)元素
<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 元素的使用,但让它以我希望的方式呈现?
我主要是 copy/pasting 来自
让我先说明一下 Aurelia RC1 中的内容投影正在完全改变(并且变得更好)。我们正在转向基于插槽的内容投影,以与最新版本的影子 DOM 规范相匹配。该规范比 Aurelia 目前拥有的基于选择器的设置(基于 Shadow DOM 规范的早期版本)强大得多。这是我们从现在到完整的 Aurelia 1.0 之间计划的唯一重大更改。
所以我告诉你的一切很快就会过时。
同时,自定义元素视图中的元素需要位于模板的根部。至于为什么 Aurelia 会这样,那是 bug:-) It has been fixed in the new implementation.
我们刚刚发布了关于新插槽实现的