2015-12-28 9 views
8

私はカスタム要素という名前の1つのカスタム要素を持っていると私はA(コントローラーAとの)Aurelia:カスタム要素の外で関数を呼び出す方法は?

custom-element

export class CustomElem { 
    @bindable onCompleted; 
    ........ 
} 

とupdateDescription()は、コントローラA.

export class A { 
    updateDescription(){ 
    .... 
    } 
} 
の機能の一つであるテンプレートの中に置きます

custom-elementを使用してupdateDescription()を呼び出す方法はありますか? CustomElemコールthis.onCompleted()

答えて

2
export class A { 
    updateDescription =() => { 
    }; 
} 

<custom-element on-completed.bind="updateDescription"></custom-element> 

は、カスタム要素への関数呼び出しへの参照を与えることcall結合コマンドを使用します。

<custom-element on-completed.call="updateDescription()"></custom-element> 

呼び出すにはupdateDescription m引数付きethodは、次の操作を実行できます

export class CustomElem { 
    @bindable onCompleted; 

    ... 

    fooBarBaz() { 
    var args = { 
     something: 'A', 
     somethingElse: 'B', 
     anotherArg: 'C' 
    }; 
    this.onCompleted(args); 
    } 
} 
<custom-element on-completed.call="updateDescription(something, somethingElse, anotherArg)"></custom-element> 
+0

ちょうどこれを試みたが、残念ながら、それがうまく機能している間、実行コンテキストは、親VMのプロパティの意味なし、カスタムコントロールに残っていますアクセス可能です。これは、カスタムコントロール内でコードを拡張したいが、コンシューマがコントロールごとに独自のVM内でコードを定義できるようにする場合には、良い方法です。 – shawty

+0

@shawty updateDescriptionの中にいくつかの外部コンテキストが必要な場合は、常にクロージャを作成することができます。場合によっては良い解決策になるかもしれません – valichek

18

内部次に

+0

'updateDescription'を引数で呼び出し、' CustomElem'で結果を確認することはできますか? – valichek

+2

はい - 答えを更新する方法に関する情報を更新 –

+0

これは公式文書の一部である必要があります。 – nym

関連する問題