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

コンポーネントメソッドのコール

<aura:method> を使用して、コンポーネントの API の一部としてメソッドを定義します。これにより、コンポーネントイベントを起動して処理する代わりに、コンポーネントのクライアント側コントローラからメソッドを直接コールできるようになります。<aura:method> を使用すると、親コンポーネントに含まれる子コンポーネントのメソッドをコールする場合に、親コンポーネントに必要なコードが簡略化されます。

次の構文を使用して、JavaScript コードのメソッドをコールします。

1cmp.sampleMethod(arg1, … argN);

cmp は、コンポーネントへの参照です。arg1, … argN は、メソッドに渡される引数の省略可能なカンマ区切りのリストです。

ボタンが含まれるコンポーネントの例を見てみましょう。ボタンのハンドラは、独自のコンポーネントイベントを起動して処理するのではなく、コンポーネントメソッドをコールします。

コンポーネントのソースは次のようになります。

1<!--c:auraMethod-->
2<aura:component>
3    <aura:method name="sampleMethod" action="{!c.doAction}" 
4      description="Sample method with parameters"> 
5        <aura:attribute name="param1" type="String" default="parameter 1" /> 
6    </aura:method>
7
8    <ui:button label="Press Me" press="{!c.handleClick}"/>
9</aura:component>

これはクライアント側コントローラです。

1/*auraMethodController.js*/
2({
3    handleClick : function(cmp, event) {
4        console.log("in handleClick");
5        // call the method declared by <aura:method> in the markup 
6        cmp.sampleMethod("1");
7    },
8
9    doAction : function(cmp, event) {
10        var params = event.getParam('arguments');
11        if (params) {
12            var param1 = params.param1;
13            console.log("param1: " + param1);
14            // add your code here
15        }
16    },
17})

この簡単な例では、メソッドに渡されるパラメータの記録のみを行います。

<aura:method> タグで name="sampleMethod" および action="{!c.doAction}" が設定されているため、メソッドが cmp.sampleMethod() でコールされて、コントローラの doAction() で処理されます。

action の値を指定しない場合、コントローラアクションは、デフォルトのメソッドの name の値に設定されます。前の例の action="{!c.doAction}" を省略すると、メソッドはコントローラの doAction() ではなく cmp.sampleMethod() でコールされて、sampleMethod() で処理されます。

メモ

継承されたメソッドの使用

スーパーコンポーネントを拡張するサブコンポーネントは、スーパーコンポーネントで定義されたメソッドにアクセスできます。

インターフェースに <aura:method> タグを含めることもできます。このインターフェースを実装するコンポーネントは、このメソッドにアクセスできます。