2017-09-26 11 views
1

emberには、アクションヘルパーがあります。sendActionヘルパーを書くにはどうすればいいですか?

{{action "actionName" arg1 arg2}} 

しかし、私は親コンポーネントにアクションを送りたいとき、私はまだ明示的sendActionを呼び出し、子の行動を記述する必要があります。私が唯一の行動をバブリングしているとしても。私はsend-actionヘルパーでこれを回避したいと思います。

{{send-action "actionKey" arg1 arg2}} 

誰でもこのヘルパーを実装する方法は知っていますか?

答えて

4

Triggering Changes with Actionsのように、クロージャーアクションを使用する必要があります。

親コンポーネントのアクションがactionKeyの場合、次の操作を行います。

閉鎖アクションとして子コンポーネントに渡し、それを:

{{my-component myName=(action 'actionKey')}} 

そして、あなたの子コンポーネントのテンプレートで:

<button {{action myName arg1 arg2}}>click me</button> 

私は例示の目的のためにmyNameを使用し、それが何でもすることができコンポーネント内で使用している名前と一致するかぎり、必要になります。

私はTwiddle:https://ember-twiddle.com/fd56b0b9d017968fc334b3f109760806に上記を再現しました。

+0

パターンを正確に模倣しようとしていますが、エラーが発生し続けます。 'は 'actionKey''のためのアクションハンドラを持っていませんでした。 –

+0

私のミスは別の場所でした。これは正しい答えだと思います。この修正は '' myName''の代わりに 'myName'を使うことです。 あなたが気にしないなら、フォローアップの質問はどうすればコントローラで(テンプレートではなく)クロージャアクションをインスタンス化するでしょうか?それを参照してください。これは可能ですか? –

+0

ようこそ!誰に渡す?上に示したテンプレート構文は、クロージャーアクションをコンポーネントに渡す方法です。 – locks

関連する問題