No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
継承されるコンポーネントの属性
属性値は、どの拡張レベルでも同じです。body 属性の場合はこのルールに例外がありますが、これについては後で説明します。
簡単な例から始めましょう。docsample:super には、値が「Default description」の description 属性があります。
1<!--docsample:super-->
2<aura:component extensible="true">
3 <aura:attribute name="description" type="String" default="Default description" />
4
5 <p>super.cmp description: {!v.description}</p>
6
7 {!v.body}
8</aura:component>{!v.body} 式についてはまだ心配しないでください。これについては、body 属性を取り扱うときに説明します。
docsample:sub は、<aura:component> タグで extends="docsample:super" を設定することによって docsample:super を拡張します。
1<!--docsample:sub-->
2<aura:component extends="docsample:super">
3 <p>sub.cmp description: {!v.description}</p>
4</aura:componentsub.cmp には、継承される description 属性へのアクセス権があり、その値は sub.cmp および super.cmp と同じです。
継承される属性の値を設定するには、サブコンポーネントのマークアップで <aura:set> を使用します。
継承される body 属性
すべてのコンポーネントは <aura:component> から body 属性を継承します。body の継承動作は、他の属性とは異なります。コンポーネントの拡張レベルごとに異なる値を指定して、継承チェーンのコンポーネントごとに異なる出力が可能です。例を見てみると、この点が明確になります。
別のタグで囲まれていない独立したマークアップは、body の一部とみなされます。これは、その独立したマークアップを <aura:set attribute="body"> 内にラップするのと同じです。
コンポーネントのデフォルトのレンダラは、その body 属性を反復処理し、すべてを表示し、表示データをスーパーコンポーネントに渡します。スーパーコンポーネントは、{!v.body} をマークアップに含めることによって、渡されたデータを出力できます。スーパーコンポーネントが存在しない場合は、ルートコンポーネントに達しているため、データが document.body に挿入されています。
簡単な例を使用して、body 属性がコンポーネントのさまざまな拡張レベルでどのように動作するかを確認してみましょう。次の 3 つのコンポーネントがあります。
docsample:superBody はスーパーコンポーネントです。これは本質的に <aura:component> を拡張します。
1swfobject.registerObject("clippy.codeblock-2", "9");<!--docsample:superBody-->
2<aura:component extensible="true">
3 Parent body: {!v.body}
4</aura:component>
5この時点では、{!v.body} が docsample:superBody を拡張するコンポーネントによって渡されるデータのプレースホルダにすぎないため、docsample:superBody では何も出力されません。
docsample:subBody は、<aura:component> タグで extends="docsample:superBody" を設定することによって docsample:superBody を拡張します。
1swfobject.registerObject("clippy.codeblock-3", "9");<!--docsample:subBody-->
2<aura:component extends="docsample:superBody">
3 Child body: {!v.body}
4</aura:component>
5docsample:subBody の出力は、次のようになります。
1Parent body: Child body:つまり、docsample:subBody は、{!v.body} の値をスーパーコンポーネント docsample:superBody で設定します。
docsample:containerBody には、docsample:subBody への参照が含まれます。
1swfobject.registerObject("clippy.codeblock-5", "9");<!--docsample:containerBody-->
2<aura:component>
3 <docsample:subBody>
4 Body value
5 </docsample:subBody>
6</aura:component>
7docsample:containerBody で、docsample:subBody の body 属性を Body value に設定します。docsample:containerBody の出力は、次のようになります。
1Parent body: Child body: Body value