尝试通过扩展元素填充Polymer Element的<content> </content>

时间:2014-07-03 15:18:20

标签: javascript html polymer shadow-dom

我有两个元素:一个是<drop-down>元素,另一个是<populated-drop-down>元素。 populated-drop-down extends drop-down,但是,正如您可能已经猜到的那样,尝试使用一些选项预先填充它。假设我可以简单地将HTML放在<shadow></shadow>标记内,但这不起作用:

<polymer-element name="drop-down" noscript attributes="label">
  <template>
    <style>
      :host{display:inline-block;border:1px solid;padding:1rem}
      #content{position:absolute}
      #drop, #content {display:none}
      #drop:checked + #content {display:block}
    </style>
    <label for="drop">{{label}}</label>
    <input type="checkbox" id="drop">
    <div id="content"><content></content></div>
  </template>
</polymer-element>


<polymer-element name="pop-drop-down" extends="drop-down" noscript>
  <template>
    <shadow>
      <ul>
         <li>Option1</li>
         <li>Option2</li>
         <li>Option3</li>
         <li>Option4</li>
         <li>Option5</li>
      </ul>
    </shadow>
  </template>
</polymer-element>


<drop-down label="Working DropDown">
      <ul>
         <li>Option1</li>
         <li>Option2</li>
         <li>Option3</li>
         <li>Option4</li>
         <li>Option5</li>
      </ul>
</drop-down>

<pop-drop-down label="Not working pre-populated dropdown">
</pop-drop-down>

Code also available code on JSBin。)

我似乎能够在<shadow></shadow>周围包装其他标签,但不能在<shadow></shadow>内放置任何标签

2 个答案:

答案 0 :(得分:3)

IIRC,Shadow DOM规范和Chrome的实施支持了很短的一段时间。但是,由于实施问题,它已被删除。

答案 1 :(得分:2)

大多数开发人员社区都想要这个功能,但浏览器实现者担心会产生性能问题,所以它被排除在最新规范之外。

我怀疑这不久就会成为ShadowDOM的一个功能,但从技术上讲,陪审团仍然没有。