私はデータダウン/アクションアップのコンセプトを知っていますが、私はDDAUでそれをやる方法がわからない状況に直面しています。私はdifferentsフォーラムやブログでそれを行う方法を検索しましたが、それは私の要求に合っていません。EMBERJS:子コンポーネントでアクションをトリガーするにはどうすればよいですか?
私はコントローラが2つあります。 最初のコンポーネントには、ボタン付きヘッダーがあります。 2番目のコンポーネントにはフォームがあります。
ボタンがクリックされると、アクションがトリガーされてコントローラによってキャッチされますが、最初のコンポーネントのボタンの「クリック」の2番目のコンポーネントにどのように通知できますか?
簡単な解決策は、最初のコンポーネントを2番目のコンポーネントに含めることでしたが、各コンポーネントがさまざまな状況で使用されるため、これを行うことはできません。
※この操作をしないでください!これはちょうどDDAUパターンに対するものです。なぜ第2のコンポーネントはそのアクションについて知る必要があるのでしょうか?そのコードをコントローラに書き込んでください。私はここに[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)があると思います。 – Lux
コンポーネントが何をしなければならないのかを実行できない場合にコンポーネントを使用し、DDAUに準拠するためにコントローラ内でこの動作の部分を移動させないのはなぜですか?私のコンポーネント**は、アクションが変更を引き起こさなければならないので、アクションについて知るために**必要となります(例えば、外部のajaxクエリ、保存などからのリフレッシュ)。これは私のコンポーネントの完全な責任であり、コントロールに委任すべきではありません。また、私は、このコンポーネントを使用して各コントローラーにコントロールコードを複製したくありません。 – luke77
あなたの最初の例であるAJAXリクエストは、おそらくコンポーネント内で行うべきではないものです。通常、このフォームコンポーネントとバートンコンポーネントを並べて使用する場合は、他の2つを含む第3のコンポーネントを作成することをお勧めします。あなたのコードは、この周囲のコンポーネントに座ることができます。おそらくあなたはこれをさらに議論するために余裕のないチャンネルに参加することができます。 – Lux