問題タブ [eventaggregator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Backbone.js の「ファット ルーター」設計の難問
この 2 週間は、アプリケーションの作成だけでなく、バックボーンと関連ツールの学習にも費やしました。設計上の問題で壁にぶつかりました。利用可能なソリューションの種類と、バックボーンの専門家がこれを問題と見なしているかどうかを知りたいです。
問題: すべてのビューの依存関係を router.js に配置する必要があり、それらがそれを回避する方法であるかどうかを判断できません。以下は、私の router.js のコードです。
router.js には、それぞれのテンプレートを取得するLandingViewおよびDashboardViewビューが含まれています。最初のルートは、ログイン テンプレートを持つ LandingView を読み込みます。ログイン後、router.js の goTo メソッドを呼び出して DashboardView() を生成します。これは機能しますが、少し醜いと感じます。しかし、LandingView() の内部から、またはルーターから直接 DashboardView() を参照せずに、LandingView から新しい DashboardView を生成する方法がわかりません。
router.js を介してこれを続けると、ルーターからすべてのビュー js ファイルを直接的または間接的にプルすることになります。ちょっと醜いですね!
Derick Baileys のイベント アグリゲーター パターンを見ましたが、DashboardView のインスタンスがまだ存在しない場合、DashboardView は LandingView によって生成されたイベントをどのようにサブスクライブするのかという問題に直面しました。イベントアグリゲーターにサブスクライブするには、誰かがそれを作成して初期化する必要がありますよね? その誰かがルーターである場合、すべてのビューをルーターで事前にインスタンス化する必要がありますか? それは意味がありません。
c# - Rx を Prism の EventAggregator と一緒に、または一緒に使用する - 提案されたアプローチ?
PrismEventAggregator
と Rx Framework の間には、どちらもイベント ストリームのサブスクライブに関するものであるという点で、重複と矛盾の両方があるように思います。Rx は明らかにはるかに細かい制御をEventAggregator
提供しますが、 は疎結合のアプリケーション全体の pub-sub インフラストラクチャを提供します。
私の質問はこれです。同じアプリケーションで両方のテクノロジーを効果的に活用するにはどうすればよいでしょうか? 私はそれらの役割を混同していますか、それとも見落としている違いがありますか? まさにこれを行った経験がある人はいますか?
wpf - Prism / CompositeMVVMWPFアプリケーションでViewModelsのアクティブ化を認識させる
私のMVVMCアプリケーションには、複数のステップを含むプロセスがあります。基本的にはウィザードです。
私のコントローラーは私の外側のビューを解決し(それを呼び出しますWizardView
)、それをメイン領域に追加します。
WizardView
ウィザードの進行状況を示すブレッドクラムトレイルと、他のビューをロードするサブリージョンが含まれています(これを呼び出しますWizardRegion
)。Step1View
にロードされた最初のビューWizardRegion
です。
各ビューには、Unityコンテナーを使用してコンストラクターに注入されたViewModelがあります。
WizardViewModel
ステップビューモデルによって公開されるいくつかのイベント集約イベントをサブスクライブします。
各ステップが完了すると、ビューモデルWizardViewModel
は状態の保存に使用するイベントを公開します。これは、WizardViewModel
進行中に各ステップからデータを収集することを意味します。ステップViewModelは、コントローラーを呼び出して次のステップをにロードしWizardRegion
ます。
最後のステップWizardViewModel
で、ウィザードの結果が保存され、MainRegion
は他の画面に戻ります。
次にウィザードに入るときに、すべてのビューとViewModelの新しいインスタンスを作成しますが、前のウィザードのイベントサブスクリプションは引き続き存在します。
ビューモデルが非アクティブ化されていることを認識させて、イベントの購読を解除するにはどうすればよいですか?
もう1つのオプションは、イベントハンドラーでイベントのサブスクライブを解除することです。これはおそらく機能しますが、ウィザードに戻ってイベントを再度サブスクライブする必要がある場合は、複雑さが増します。
javascript - ビューデザインパターンとイベント間の通信
別のビューを参照してそのイベントをリッスンするビューがある場合、イベントハンドラーは問題ありません。これは、デカップリングと再利用に最適です。
問題は、参照されていないビューがある場合があるため、何かが発生したかどうかを知るためのグローバル通知であるEvent Aggregatorを使用することです...しかし、参照できない子ビューを聞きたいだけの場合は、正しくないようです。 DOM階層内のバブリングイベント。
しかし、私には次のようなビュー階層があると言わせてください。
- ParentView
- ChildView
- ChildView
- ModalView
- ChildView
- ChildView
ModalViewがイベントをトリガーするタイミングをParentViewで知りたいのですが...ModalViewが同じDOM階層にないため、イベントバブリングを使用できません。この場合、イベントアグリゲーターを使用する必要がありますか?私の場合、イベントバブルが収まるようにしたかったのです。
wpf - PRISM CompositePresentationEvent のパブリッシャーで Callback アクションを呼び出すにはどうすればよいですか?
サブスクライバーによって処理された後、PRISM CompositePresentationEvent のパブリッシャーでコールバック アクションを呼び出すことは可能ですか? はいの場合、どうすればできますか?
シナリオの例を次に示します。
- メインページ
- 左コントロール
- 右コントロール
LeftControl は Event を発行し、RightControl サブスクライブはイベントに基づいて動作します。右側のコントロールでのアクションが完了したら、別の関数を実行して左側のコントロールを更新したいと思います。
wpf - 親メニューから子 ViewModel にコマンドをバインドするためのパターン
Caliburn Micro を使用して WPF MVVM アプリを作成しています。ScreenConductor であるシェル ビュー モデルのビューにあるメニュー (リボン) に一連のボタンがあります。現在アクティブなスクリーン ビュー モデルに基づいて、アクティブなスクリーンで使用できる場合はリボン ボタンを無効/有効にし、アクティブなスクリーンでアクションまたはコマンドを呼び出したいと考えています。
これは一般的なシナリオのようです。この動作を作成するためのパターンはありますか?
c# - GetEvent<>。イベントアグリゲーターのサブスクライブで例外が発生する
リフレクションを使用してdllをロードしてから、そのdllでメソッドを実行しようとしています。そのメソッドには、イベントをサブスクライブするこの行があります。この行で例外が発生します
この行は、リフレクションを使用して動的に呼び出しているdllにあります
例外は次のようなものです。
IDelegateReferenceのターゲットは、タイプSystem.Action`1 [[CustomType、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null]]である必要があります。パラメータ名:actionReference
これはイベント処理メソッドであり、動的に呼び出しているのと同じdllにあります
何か助けていただければ幸いです。
.net - リアクティブ拡張とイベントアグリゲーター
Reactive Extensions は初めてです。Rx は、基になるオブジェクトへの (実行時の) 変更を監視し、サブスクライバーに変更されたときに通知することを理解しています。
イベントの Rx を検討してください。これは、すべてのイベントをチェックし、それらの変更をサブスクライブに公開します。同様に、イベントをサブスクライバーに発行するイベント アグリゲーターがあります。どちらも同じ仕事をしています。どちらも同じ目的を果たしています。両者に違いはありますか。
ご返信ありがとうございます
javascript - 単純なイベント アグリゲーター
require.js で動作するシンプルなイベント アグリゲーターを探しています。ビューモデルを含むモジュールと、ある種の「リスナー」を含むモジュールの 2 つがあります。
これを行うものはありますか?この種のアーキテクチャは良いアイデアですか? これは、クライアント側アーキテクチャへの私の最初の進出です。
backbone.js - Backbone EventAggregator の問題と質問
モジュールの読み込みにrequire.jsを使用し、アプリケーションの構造化と機能を支援するためにマリオネットを使用してバックボーンアプリを構築しています。次のように、イベントアグリゲーターのrequireモジュールをセットアップしました:-
私はそれを他のrequireモジュールに渡し、中央のイベント処理およびメッセージングコンポーネントとして機能させることを望んでいましたが、これである程度成功しています。次のように、ベントを依存関係として他のモジュールに問題なく渡すことができます:-
私が抱えている問題は、すべてのイベントがアプリのさまざまな場所でトリガーされているにもかかわらず (コンソール ログで確認できます)、アプリの一部でイベントをリッスンできないことです。たとえば、次のようなイベントを取得しようとしている Marionette モジュール (require モジュールとして実行時に読み込まれる) があります。
この場所からベントをログに記録しても、オブジェクトとして見ることができますが、何も得られません。ログには、アプリの他の部分がリッスンしている他のイベントではなく、実際にはルート レベルのアプリケーションによってリッスンされているイベントのみが含まれる一連のイベントが含まれています。そして、ここで私の理解が破綻します。私は、イベント アグリゲーターをアプリケーション構造全体のグローバルな通信およびメッセージング システムとして使用できると考えていました。何が起こっているのかについて誰か洞察を教えてください。
どうもありがとう、
サム
*更新/編集/解決策*
こんにちは、まあ、私は今それを機能させています(上記を投稿してからわずか5分-doh!)。基本的に、モジュールの初期化イベントにリスナーを追加するのは時期尚早でした (私が知る限り)。関数のチェーンに沿ってそれらをさらに移動したところ、すべてが期待どおりに動作するようになりました.