我有一个复杂的情况,涉及几个不同模块的几个实例。
例如,我有一个输入模块,表单模块和一个formSelector模块。选择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内部组成的表单。问题是,app wide触发器将更新其上方的表单(mainForm
)。
答案 0 :(得分:0)
Durandal默认在 app 类上连接了事件,因此您可以使用 app.trigger 和 app.on 功能全球。
但是,您可以使用 Events.includeIn(obj)函数连接自己的对象。
有关详细信息,请访问documentation。