2

私は、少数の複雑でステートフルなコンポーネントで構成される Ember アプリを作成しています。従来の CRUD アプリではないため、Ember がこの種のアプリをどのように処理するかについて頭を悩ませています。

これは、高度にインタラクティブな単一ページのアプリケーションです。コンポーネントの例として、Xmpp テキスト チャット、マルチ パーティ オーディオ、Xmpp 共有ホワイトボード、ポップアップ通知があります。

ユーザー コンテキスト (オーディオ/ホワイトボードで作業しているユーザー) を設定するグローバル状態 (ルーター経由で処理を確認できます) があります。私がよく理解していないのは、音声やホワイトボードとは無関係であるがステートフルなチャット コンテキストを設定する際に、ルーターがどのような役割を果たすかということです。ルーターからの URL 文字列が、これらすべてのコンポーネントの状態を同時に反映する方法を想像できません。

これは、ルーターの使用を完全にスキップした場合ですか? その場合、アプリケーションのビュー/コントローラーをリンクするにはどうすればよいですか? これまで、ルーターの connectOutlets メソッドを使用して、ビューとコントローラーをリンクしていました。このメソッドを呼び出さずに、このバインドを行う別の (構造化および組織化された) 方法は何でしょうか?

ありがとう

4

1 に答える 1

2

良い質問!

  • グローバル状態: ルーターを使用
  • アプリケーションの状態: アプリケーション コンポーネントに関連付けられたコントローラー シングルトン内

原則として、ルーターを使用して状態を管理し、ユーザーがブックマークしたり、ブラウザーの進む/戻るボタンを使用して操作したりすることをお勧めします。推測ですが、ホワイトボードの ID が含まれている可能性のあるアプリ用です。

通常、チャット、音声、通知などのコンポーネントが存在し、ルーターとは関係なく状態を維持します。場合によっては、これらのコンポーネントはルートに応じて異なる動作をすることがあります (表示されるホワイトボードに応じてチャットが特定のチャネルにバインドされるなど) が、チャット ウィジェット自体の状態は ChatController シングルトンのプロパティとして保存されます。

ember ガイドはまだ完成していませんが、コントローラー ガイドの最後のセクション「アプリケーション プロパティの保存」が参考になるかもしれませんhttp://emberjs.com/guides/controllers/

于 2013-01-03T21:50:15.913 に答える