2

私の質問は、Maquette Javascript フレームワークのコンポーネント間の通信についてです。

コンポーネントで使用されるMenuサブコンポーネントがあるとしApplicationます。インスタンスは、アプリケーションに表示されるメイン コンテンツを交換するためApplicationに、インスタンスでメニュー項目が選択されたときに知りたいと考えてMenuいます (たとえば)。つまり、子コンポーネントとその親コン​​ポーネントの間で通信する方法が必要です。これは、Maquette でどのように実現できますか?

確かに、アプリケーション インスタンスが所有するコールバックをメニュー インスタンスに渡すことができます。このコールバックは、項目が選択されたときに呼び出されます。しかし、「選択」イベントはメニューコンポーネントの「レンダリング側」の側面にすぎないため、それを行うのは少し気が進まないので、イベントがMenuAPI に漏れないようにするのではなく、レンダリング関数内にとどまることをお勧めします。 /method 代わりに。

そこで、「レンダリング側」でイベントを扱いたいと思います。CustomEventしかし、それは の render 関数からを送信し、の render 関数内にハンドラMenuを登録する必要があることを意味していると思いますよね? このユースケースはマケットでサポートされていますか? 私のユースケースに代わる他の方法はありますか?CustomEventApplicationCustomEvent

ありがとう!

PS:より多くの回答を得るために、チケット#71から質問を再投稿しました。

4

1 に答える 1

1

通常行うことは、アイテムがクリックされたときに呼び出されるコンポーネントにコールバックを渡すことです。menuItemClicked(menuItem: MenuItem)たとえば、Menu はコールバックを使用して構築できます。これにより、アプリケーション固有の知識がメニュー/メニュー項目に漏れることはありません。メニューの作成者は、ルーティングや変数の変更など、コールバック内で何でも行うことができます。

イベントシステムももちろん可能です。ただし、DOM 階層を使用してイベントをバブルすることはお勧めしません。Applicationを使用してメニューを作成しmenu = createMenu(...)、その後何かを呼び出すことを想像できますmenu.addEventListener('itemClicked', navigate)

于 2016-09-20T09:28:34.533 に答える