この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

サーバ側のアクションのコール

クライアント側コントローラからサーバ側コントローラのアクションをコールします。クライアント側コントローラにコールバックを設定し、サーバ側のアクションが完了したときにコールされるようにします。サーバ側のアクションは、逐次化可能な JSON データを含む任意のオブジェクトを返すことができます。

クライアント側コントローラは、名前-値のペアを含む JSON オブジェクトです。この名前はそれぞれクライアント側のアクションに対応します。この値は、アクションに関連付けられた JavaScript 関数です。

次のクライアント側コントローラには、サーバ側コントローラで serverEcho アクションを実行する echo アクションが含まれます。クライアント側コントローラに、サーバ側のアクションが返されたら呼び出されるコールバックアクションを設定します。この場合、コールバック関数がユーザにサーバから返された値を含むアラートを表示します。

1swfobject.registerObject("clippy.codeblock-0", "9");{
2    "echo" : function(component) {
3        // create a one-time use instance of the serverEcho action
4        // in the server-side controller
5        var a = component.get("c.serverEcho");
6        a.setParams({ firstName : component.get("v.firstName") });
7
8        // Create a callback that is executed after 
9        // the server-side action returns
10        a.setCallback(this, function(action) {
11            if (action.getState() === "SUCCESS") {
12                // Alert the user with the value returned 
13                // from the server
14                alert("From server: " + action.getReturnValue());
15
16                // You would typically fire a event here to trigger 
17                // client-side notification that the server-side 
18                // action is complete
19            }
20            else if (action.getState() === "ERROR"){
21                var errors = a.getError();
22                if (errors) {
23                    $A.logf("Errors", errors);
24                    if (errors[0] && errors[0].message) {
25                        $A.error("Error message: " + 
26                                 errors[0].message);
27                    }
28                } else {
29                    $A.error("Unknown error");
30                }
31            }
32            else {
33                alert("Action state: " + action.getState());
34            }
35        });
36
37        // A client-side action could cause multiple events, 
38        // which could trigger other events and 
39        // other server-side action calls.
40        // $A.enqueueAction adds the server-side action to the queue.
41        $A.enqueueAction(a);
42    }
43}

クライアント側コントローラでは、c の値プロバイダを使用してサーバ側コントローラのアクションを呼び出します。この構文は、クライアント側コントローラのアクションを呼び出すためにマークアップで使用するものと同じです。cmp.get("c.serverEcho") コールは、サーバ側コントローラで serverEcho メソッドをコールしていることを示します。サーバ側コントローラのメソッド名は、クライアント側のコールの c. に続く内容と完全に一致している必要があります。

$A.enqueueAction(action) は、サーバ側コントローラのアクションを、実行されるアクションのキューに追加します。この方法でキューに追加されたアクションはすべて、イベントループの最後に実行されます。フレームワークでは、個々のアクションごとに個別の要求を送信するのではなく、イベントチェーンを処理し、関連する要求をバッチにまとめてからキューのアクションを実行します。これらのアクションは非同期で、コールバックが設定されています。

アクションの有効な状態は次のとおりです。

NEW (新規)
アクションが作成されていますが、まだ処理されていません。
RUNNING (実行中)
アクションを処理中です。
SUCCESS (成功)
アクションが正常に実行されました。
ERROR (エラー)
サーバからエラーが返されました。
ABORTED (中止)
アクションが中止されました。