将相同的内容放在两个html <slot>标记中

时间:2017-05-14 16:12:39

标签: html polymer web-component shadow-dom polymer-2.x

有没有办法(如果有可能,有什么方法可以做到这一点)将相同的DOM元素放在文档的两个不同位置?似乎应该可以使用<slot>标签。

我想象的用例是在文档中放置同一个fab的两个副本:一个在标题中,一个漂浮在左下角,并根据设备宽度有条件地隐藏一个或另一个。那么,如果不可能,那么有没有办法动态改变我的DOM节点所在的<slot>?顺便说一句,我正在使用Polymer 2.0预览版。

1 个答案:

答案 0 :(得分:0)

一个元素只能分配给一个插槽。

您可能想重新考虑您的前提。到目前为止,解决问题的最简单方法是在标记中使用相同的元素两次:

<template is="dom-if" if="[[!mobileDevice]]">
  <my-header>
    <my-fab></my-fab>
  </my-header>
</template>

<!-- ... -->

<my-sidebar>
  <template is="dom-if" if="[[mobileDevice]]">
    <my-fab></my-fab>
  </template>
</my-sidebar>

但是,如果您真的想要更改分配元素的插槽,您只需将元素添加到新插槽主机的子节点,例如:

mySidebar.appendChild(myFab);