0

私はいくつかの異なるモジュールの複数のインスタンスを含む複雑な状況があります。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の機能を使用できるように

答えて

0

デュランダルは、アプリクラスではデフォルトでイベントを有線ました。

ただし、Events.includeIn(obj)関数を使用して、独自のオブジェクトを配線することができます。

詳細については、documentationを参照してください。

関連する問題