私はいくつかの異なるモジュールの複数のインスタンスを含む複雑な状況があります。Durandalにはモジュールの特定のインスタンスでイベントを発生させるネイティブな方法がありますか?
たとえば、私は入力モジュール、フォームモジュール、およびformSelectorモジュールを持っています。 formSelectorでフォームを選択すると、正しい入力がフォームに入力されます。
フォームの上に、私はさまざまな入力を持つ別のフォームを持っています。
すべての入力は、データベースから返されたものに基づいて構築されています。
ここでは、pub/subを使用してイベントをトリガーし、フォームオブジェクトをformSelectorからフォームモジュールに渡そうとしました。これは、トリガーがフォームモジュールインスタンスに固有ではないことを受け入れます。ページ上のすべてのフォームのイベントがトリガーされます。
特定のフォームインスタンスに対してのみイベントをトリガーする方法はありますか?
例
注:私は、構造体の参照のためにその場でこれを作りました。このコードはおそらく動作しません。また、私はjavascriptが質問に答える必要があるとは思わない。
入力:いくつかのデータを観察
<input data-bind="value: input.data" />
フォーム:入力モジュールの一覧
<form>
<div data-bind="foreach: form.inputs">
<div data-bind="compose: { model: input.modelPath, activationData: input.activationData }"></div>
</div>
</form>
FormSelector:
たいフォームを選択//List of buttons to select the desired form
<div data-bind="foreach: forms">
<div data-bind="click: updateForm"></div>
</div>
//The desired Form (Module)
<div data-bind="compose: { model: form.modelPath, activationData: form.activationData }"></div>
Index.htmlと
//Form Module
<div data-bind="compose: { model: mainForm.modelPath, activationData: mainForm.activationData }"></div>
//FormSelector Module
<div data-bind="compose: { model: formSelector.modelPath, activationData: formSelector.activationData }"></div>
例を使用して、updateForm
内のイベントをトリガーしたいと思います。このイベントはFormSelector内で構成されたフォームに対してのみトリガーされます。問題は、アプリのワイドトリガーがフォーム(mainForm
)を更新することです。あなたはグローバルapp.triggerとし、app.onの機能を使用できるように