No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
コンポーネントの動的な作成
クライアント側の JavaScript コードで newComponentAsync() メソッドを使用してコンポーネントを動的に作成できます。
$A.componentService.newComponentAsync(callbackScope, callback, config, attributeValueProvider, localCreation, doForce, forceServer) は、新規作成されたコンポーネントを返す callback 必須関数と、コンポーネント記述子および属性を提供する config 必須オブジェクトを取得します。すべての引数についての詳細は、JavaScript API リファレンスを参照してください。
次のサンプルコードでは、ローカル ID を持つ新しい ui:button コンポーネントを作成して、イベントハンドラを新しいボタンに割り当て、そのボタンをボディに追加します。
1swfobject.registerObject("clippy.codeblock-0", "9");createButton : function(cmp) {
2 $A.componentService.newComponentAsync(
3 this,
4 function(newButton){
5 //Pass an event handler to the new button
6 newButton.addHandler('press', cmp, 'c.someHandler');
7
8 //Add the new button to the body array
9 var body = cmp.get("v.body");
10 body.push(newButton);
11 cmp.set("v.body", body);
12 },
13 {
14 "componentDef": "markup://ui:button",
15 "localId": "myLocalId",
16 "attributes": {
17 "values": { label: "Submit" }
18 }
19 }
20 );
21}1swfobject.registerObject("clippy.codeblock-1", "9");var newbody = cmp.get("v.body");
2var newCmp = body[0].find("myLocalId");連動関係の宣言
このフレームワークでは、コンポーネントなどの定義間の連動関係が自動的に追跡されます。ただし、フレームワークで簡単に検出できない連動関係もあります。たとえば、コンポーネントのマークアップで直接参照されていないコンポーネントを動的に作成する場合などがこれに該当します。こうした動的な連動関係をフレームワークが把握できるようにするには、<aura:dependency> タグを使用します。これにより、必要に応じてコンポーネントとその連動関係がクライアントに送信されます。
使用方法についての詳細は、aura:dependency を参照してください。
サーバ側の連動関係
newComponentAsync() メソッドでは、クライアント側のコンポーネントの作成とサーバ側のコンポーネントの作成の両方がサポートされています。サーバ側の連動関係が見つからない場合、このメソッドは同期して実行されます。コンポーネントの作成にサーバ要求が必要かどうかは、最上位コンポーネントで判別されます。
コントローラアクションがコールされるのはコンポーネントが作成された後のみであるため、コンポーネントの作成では、サーバ側のコントローラはサーバ側の連動関係にはなりません。
サーバ側の連動関係があるコンポーネントは、事前に読み込まれている場合でも、そのサーバで作成されます。サーバ側の連動関係がなく、連動関係の事前の読み込みまたは宣言によってその定義がすでにクライアントに存在している場合、サーバコールは実行されません。サーバ要求を強制するには、forceServer パラメータを true に設定します。