tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Lightningアプリ開発『Apexクラス』へのアクセス

Lightningアプリ開発でApexクラスの処理を呼び出す方法についてです。


まずcomponentで使用するApexクラスを宣言する必要があります。aura:componentタグでcontroller="ApexClassName"という感じで指定できます。このときクラス名には名前空間プレフィックス(namespace)を先頭につける必要があります。

f:id:tyoshikawa1106:20141026145350p:plain


これでLightning Component内で使用するApexクラスを宣言することができました。次にApexクラス側でLightningで使用するメソッドであることを宣言します。これは『@AuraEnabled』を宣言することで対応できます。

f:id:tyoshikawa1106:20141026145908p:plain


実際にApexクラスを呼び出すのは『controller.js』または『helper.js』で呼び出すことになると思います。Apexクラスで宣言している『getContacts』を呼び出したい場合は、『component.get("c.getContacts")』というように宣言します。『component.get()』はLightning用に用意されたメソッドみたいです。getContactsの前にある『c.』もおそらく決まった宣言方法だと思います。(componentのc?)

f:id:tyoshikawa1106:20141026150333p:plain


上の書き方でApexクラスの実行結果を変数『action』にセットできます。この処理の後は『action.setCallback』というように宣言することでApexクラスの戻り値を使用することができます。

f:id:tyoshikawa1106:20141026150613p:plain

data.getReturnValue()はLightning用に用意された関数で戻り値を取得するためのものだと思います。上の書き方で変数『v.contacts』にApexクラスの戻り値をセットしています。

『$A.enqueueAction(action);』という宣言方法があるのですが、おそらくこれも必ず宣言する必要があると思います。Cheat Sheetによると『Queues an action for batch execution』という説明がありました。単純に翻訳すると『バッチ実行のためのアクションをキューに入れる』という意味になりました。バッチ実行というのがまだよくわからないのですが、これで処理を実行しているのだと思います。

f:id:tyoshikawa1106:20141026151217p:plain


まだイマイチわかっていないことが多いのですが、LightningからApexクラスを呼び出す方法はこんな感じでした。