SAPUI5のEvent BusとRouterの違いは何ですか? ルータやイベントバスを使用しなければならないシナリオを手伝ってください。SAPUI5のrouterとeventBusの違い
答えて
ショッピングのシナリオであなたを説明しようとします。
「MyshopWebsite」ショッピングサイトを参照しているとします。それがSAPのUI5ライブラリを使用して開発されていると思いましょう。
主要Functionlity:
- 無限の最初のホーム・ページ(ロード、たとえば、n個の項目にスクロールして、10の以上の項目とすぐに底を打っよう
- クリックして製品にし、あなたが見ることができます。あなたの選択に基づいて、サイドパネルに示されるその別のページで詳細。
- 提案。
SCEN ario 1:今、ホームページでスクロールしています。あなたが底を打つとすぐに、新しい製品がロードされます。注:
ここでは、同じページでさらに情報を表示する必要があります。ブラウザのハッシュをナビゲートまたは変更することはありません。
ルータは、現在のページとは異なるページに移動し、必要なデータを渡すために使用されます。だからここでは使わない。私は同じページにいて、ブラウザーのURLとその現在のハッシュを変更したくありません。
したがって、ページの最後に達した後でさらに商品を表示するにはどうすればよいですか?ページのブラウザの終わり(JSを介して)を確認し、より多くを読み込みます。多くの方法があります。
だから、世界に伝えることが仕事であるメッセンジャーXがいるとしましょう。彼はページの終わりに達しました。我々はより多くの製品が必要です!
そして、私たちのメッセンジャーを聞いているリスナーLがいます。彼は彼に聞くと、彼に新しいデータを送ります。
したがって、専門用語に変換してください。
function initMethod() {
var eventBus = sap.ui.getCore().getEventBus();
eventBus.subscribe("homePage", "reachedEndOfPage", handleEndOfPage, this); // Listener L
}
function reachedEndOfPage() {
var eventBus = sap.ui.getCore().getEventBus();
eventBus.publish("homePage", "reachedEndOfPage"); // Messenger X
}
function handleEndOfPage() {
// Ok.. lets send more data
}
シナリオ2:製品をクリックしました。シンプルで、彼を新しいページに移動させてください。ページの情報を表示します。ブックマークできるようにBroswer URLとハッシュを変更します。
何を選択するか:ルーター。
SAPUI5ルータはCrossroads JSをベースにしています。彼らは十字路と言う:
これは、強力で柔軟なルーティングシステムです。適切に使用すると、オブジェクトの結合を解除し、ナビゲーションパスとサーバー要求を抽象化することでコードの複雑さを軽減できます。
ルーターはナビゲーションに使用されます。
ただし、ここでイベントバスを使用してナビゲーションできます。どうやって ?プロダクト、パブリッシュイベント(「Product Clicked」)のプレスイベントで、「Product Clicked」イベントを購読するハンドラを作成し、App.navTo
またはRouter.navTo
を呼び出します。
したがって、イベントバスは、手動で起動できるすべての種類のイベントのリスナーを作成します。
ここで、ルータはナビゲーションに使用され、ブラウザーのハッシュ変更のみを聴いています。
シナリオ3:今、私はそれが明確になることを望みます。私はナビゲートしていませんが、ユーザーが製品をクリックするたびに耳を傾け、反応したいと思っています。
私は、「クリック」するメッセンジャーを作成し、誰かがクリックすると叫ぶ(公開する)人物を作成します。そして提案リスナー、つまりリスナー「Suggest」は、私たちのメッセンジャーによって公開されたイベントを聞いたり、反応したりします:「クリック」。
私はそれがあなたを助けてくれることを願っています。あなたがまだ混乱している場合は教えてください。必要に応じてさらに情報を追加しようとします。
ルータ異なるターゲット間でをナビゲートできます。 1つのターゲットは1つまたは2つのビューで構成されます。
ビューAのリストとビューBのリスト項目の詳細を含むフォームがあるとします。ビューAのリスト項目を押すと、ルータを使用して詳細ビューBにナビゲートできます。
イベントバスでを異なるアクティブコントローラ間で通信できます。
マスターと詳細表示の分割アプリがあるとします。マスタービューでイベントを発生させ、詳細ビューでこれらのイベントを聞くことができます(逆も同様)
基本的にEventBusを使って何かと通信することができます。コンポーネントごとに1つのEventBus +追加のグローバルEventBusがあるので、コンポーネント/アプリケーション間で通信することさえできます。そして、イベントエミッタを知らなくても(EventListenerパターンよりも大きな利点があります) – cschuff
- 1. EventStreamとEventBusの相違点
- 2. Central EventBusとBackbone.Radioの違いは?
- 3. SAPUI5カスタムNav Router on Master Detail
- 4. React-router V4の各パッケージ(react-router-domとreact-router-websiteのような)の違い
- 5. EventBusとRxJavaの違いは何ですか?
- 6. react-router 4.0、react-router-domとreact-router-reduxの違いは何ですか?
- 7. react-router-reduxの "push"メソッドとreact-routerの "browserHistory"の違いは何ですか?
- 8. 角度:$ routerと$ rootRouterの相違点?
- 9. Simple Router(CodeIgniter)とRestful Router(Slim Php)のような違いがあります
- 10. v-btn内のルーティングとrouter-linkの使用の違い
- 11. React-Router V4 - <Match>と<Route>の違い
- 12. Java Vert.xとSockJS〜Eventbus
- 13. EventBusの活動とサービスの連絡
- 14. EventBusカスタムビュー
- 15. Mosby&EventBus
- 16. initへの2つの方法の違いAkka Router
- 17. VueJSのEventBusが動作しない
- 18. SAPUI5とログオントークン/ SSO?
- 19. sapui5 VizframeとIconTabBar
- 20. SAPUI5バックオフィス用のUIとLARAVEL
- 21. SAPUI5ダイアログとバインドアクションの追加
- 22. sapui5のネームスペースの使い方
- 23. アンドロイドEventBus - onEventMainThreadは
- 24. BAM EventBusサービス
- 25. Vertx eventbus rx exceptionhandling
- 26. Guava EventBusユニットテスト
- 27. Listening EventBus in Jython
- 28. Akka EventBus for Javaの例
- 29. Guava java EventBusのインスタンス化エラー
- 30. PlayFramework 1.2.xのEventBus実装
この混乱の原因はわかりません。ドキュメンテーションに何が欠けていたのですか?あなたはその違いを理解しようとしましたか? – boghyon
この回答は、* EventBus *をよりよく理解するのに役立ちます。https://stackoverflow.com/a/46186706/5846045実際には、* EventBus *はナビゲートを実行する方法を知っていましたが(* https://stackoverflow.com/q/28361608/5846045)、* Router *はそれを廃止しました。 – boghyon