2016-04-22 7 views
0

コンポーネントがかなりうまく動作しているので、コントローラ内で呼び出す必要があります。Ember:コントローラからコンポーネントアクションを呼び出す

シナリオ:私はEmberアプリケーションを持っていますが、私は更新ボタンコントローラを持っています。コンポーネントにパラメータとして渡してボタンとトーストの両方を渡すメッセージが表示されたトースト(Materializecss)別々にうまく動作します。このコンポーネントを使用して更新が正常に行われたかどうかをユーザーに表示するには、このコンポーネントをボタンコントローラーの内部で呼び出す必要があります。どのように私はコントローラ内でこのコンポーネントを呼び出すことができますの甘さ?ありがとう

+1

に見てみる必要があります。属性を渡すことができます。本当に必要な場合は、属性を監視することも含めて、属性で必要な処理を行います。テンプレートは自動的に属性を観察し、その値に基づいてDOMを調整します。 –

+0

回答ありがとうが、私はうまくいきませんでした。私はcallback-toast.jsというコンポーネントを持っています。その中に、ユーザーの画面上でトーストを実行する「実行」というアクションがあります。また、button-controller.jsというコントローラもあります。ボタンコントローラの内部で、コンポーネントをトリガするためのリファレンスを作成するにはどうすればよいですか? –

+0

できません。それはコンポーネントの仕組みではありません。 –

答えて

0

私はember-twiddleを見て、私が作成し、あなたが何をしたいと思って、法案に合っているかどうかを参照してください?

"コンポーネントの呼び出し"ではなく、更新された属性/データをコンポーネントにプッシュする方法を考える必要があります。

0

Emberは、「データダウアクションアップ」パターンに依存しています。これは、コントローラからコンポーネントアクションを明示的に呼び出すことができないことを意味します。 (例えばhttps://dockyard.com/blog/2015/10/14/best-practices-data-down-actions-upを参照してください)

代わりに、より良い設計は、データを管理するためのサービスを定義することです。メッセージは "トースト"されます。次に、あなたのコントローラに注入することでこのサービスを利用可能にします。メソッドを呼び出して新しいメッセージを登録し、新しいデータを生成することができます。

新しいメッセージの表示などを担当するコンポーネントテンプレート(独自のテンプレートに含める)も提供します。サービスによって管理されるデータが変更されるたびに、コンポーネントテンプレートが更新されます。

あなたは間違いなくあなたが外からコンポーネントを「コール」することはできませんhttps://www.npmjs.com/package/ember-toastr