No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
ステップ 4: ネストされたコンポーネントを作成する
次のフローチャートに、新しい経費を作成するときの、アプリケーションでのデータフローを示します。コンポーネント form.cmp で [送信] ボタンをクリックするとデータが取得され、JavaScript コードで処理され、サーバ側のコントローラに送信してレコードとして保存されます。レコードのデータは、このステップで作成するネストされたコンポーネントに表示されます。![]()
- をクリックします。
- [New Lightning Bundle (新規 Lightning バンドル)] ポップアップウィンドウで、「expenseList」と入力します。これにより、expenseList.cmp という新しいコンポーネントが作成されます。
-
expenseList.cmp で、次のコードを入力します。
namespace を、登録済みの名前空間と置き換えます。
1swfobject.registerObject("clippy.codeblock-0", "9");<aura:component> 2 <aura:attribute name="expense" type="namespace.Expense__c"/> 3 4 <!-- Color the item blue if the expense is reimbursed --> 5 <div class="{!v.expense.namespace__reimbursed__c == true 6 ? 'listRecord recordLayout blue' : 'listRecord recordLayout white'}"> 7 <a aura:id="expense" href="{!'/' + v.expense.id}"> 8 <div class="itemTitle">{!v.expense.name}</div> 9 <div class="recordItem">Amount: 10 <ui:outputNumber 11 value="{!v.expense.namespace__amount__c}" format=".00"/> 12 </div> 13 <div class="recordItem">Client: 14 <ui:outputText 15 value="{!v.expense.namespace__client__c}"/> 16 </div> 17 <div class="recordItem">Date: 18 <ui:outputDateTime 19 value="{!v.expense.namespace__date__c}" /> 20 </div> 21 <div class="recordItem">Reimbursed? 22 <ui:inputCheckbox 23 value="{!v.expense.namespace__reimbursed__c}" click="{!c.update}"/> 24 </div> 25 </a> 26 </div> 27</aura:component>ここでは、{!expense.namespace__Amount__c} ではなく、{!v.expense.namespace__Amount__c} を使用しています。この式は、expense オブジェクトおよびその amount 値にアクセスします。名前空間でプレフィックスを付ける必要があるのは、カスタム項目のみです。expense の型は Expense__c です。非プリミティブ型には、myNamespace.myApexClass の形式を使用します。
また、href="{!'/' + v.expense.id}" は、経費 ID を使用して、各経費レコードの詳細ページへのリンクを設定します。
-
サイドバーで [STYLE] をクリックし、次の CSS ルールセットを入力します。
1swfobject.registerObject("clippy.codeblock-1", "9");.THIS.recordLayout { 2 list-style: none; 3 padding: 14px; 4 margin: 10px; 5 border-bottom:1px solid #cfd4d9; 6} 7 8.THIS.listRecord { 9 margin: 14px; 10 border-radius: 5px; 11 border: 1px solid #cfd4d9; 12 position: relative; 13} 14 15.THIS .uiOutputText { 16 line-height: 1.1em; 17} 18 19.THIS .itemTitle { 20 font-size: 15px; 21 padding-bottom: 3px; 22 overflow: hidden; 23 text-overflow: ellipsis; 24 white-space: nowrap; 25} 26 27.THIS .recordItem { 28 text-overflow: ellipsis; 29 white-space: nowrap; 30} 31 32.THIS a:hover { 33 text-decoration: none; 34 background-color: #235636; 35} -
form.cmp で、ネストされた新しいコンポーネント expenseList を使用するように aura:iteration タグを更新します。既存の aura:iteration タグを見つけます。
1swfobject.registerObject("clippy.codeblock-2", "9"); <aura:iteration items="{!v.expenses}" var="expense"> 2 <p>{!expense.name}, {!expense.namespace__Client__c}, {!expense.namespace__Amount__c}, {!expense.namespace__Date__c}, {!expense.namespace__Reimbursed__c}</p> 3 </aura:iteration>そのタグを、expenseList コンポーネントを使用する aura:iteration タグに置き換えます。namespace を、登録済みの名前空間と置き換えます。
1swfobject.registerObject("clippy.codeblock-3", "9"); <aura:iteration items="{!v.expenses}" var="expense"> 2 <namespace:expenseList expense="{!expense}"/> 3 </aura:iteration> 4経費の詳細の表示を処理する expenseList コンポーネントに各 expense レコードを単に渡す場合と、マークアップが似ていることがわかります。
- 変更を保存し、ブラウザを再読み込みします。
中級編
コンポーネントを作成すると、そのコンポーネントの定義を提供することになります。コンポーネントを別のコンポーネントに挿入する場合は、そのコンポーネントへの参照を作成します。つまり、同じコンポーネントの異なる属性を持つ複数のインスタンスを追加できるということです。コンポーネントの属性についての詳細は、コンポーネントのコンポジションを参照してください。