2014-03-06 39 views
6

我:訪問Polymer中的所有內部元素?

<k-myelement> 
    <k-anotherelement></k-anotherelement> 
</k-myelement> 

當我定義模板是這樣的:

<polymer-element name="k-myelement"> 
    <template> 
     <content select="k-anotherelement" id="anotherelement"></content> 
    </template> 
</polymere-element> 

我可以this.$['anotherelement']

訪問內部元素,但這種做法我必須預先定義,其內元素可以使用。

我要的是一個模板技術,可以讓我來訪問所有的內部元素。

回答

15

<content>insertion points)是用於呈現在所述影子DOM的特定位置中的光DOM元素。使用<content select="k-anotherelement"></content>說:「在這裏提供任何<k-anotherelement>元素如果你希望所有的光DOM節點被邀請到渲染方,只需使用<content></<content>

其他問題與您的片段:。

  • 的名稱元素需要在<polymer-element>定義,還不如<template name="k-myelement">
  • 要獲得經過<content>節點列表,使用content.getDistributedNodes()。您可能還需要考慮,如果你甚至需要<content>。光DOM子節點可與.children和其他訪問者訪問。從the Polymer docs

    對於<content>,您可以通過content.getDistributedNodes()重複,以獲得在插入點分佈的節點列表。

    聚合物,調用此方法是在attached()回調,所以你要保證該元素在DOM樹的最佳場所。

    還請記住,您可以訪問DOM光作爲元素的正常兒童(即this.children,或其他訪問者)。這種方法的區別在於它是整個潛在分佈式節點集合;不是那些實際分發的。

+0

啊,是的,我在'<聚合物元素>'標籤寫的不是在''