问题:
我在屏幕上有 3 个 UI 组件:
- 顶部菜单:选项(真或假)
- 左侧菜单:A、B、C、D 等项目列表
- 表单内容:一个表单。根据 的值,它是可见的还是隐藏
Top menu's Option
的。其内部内容因Left menu's item
所选内容而异。例如,A selected 将显示 2 个输入框,而 B 将显示 3 个输入框,等等...
它的工作方式是用户将选择左侧菜单项,然后单击顶部菜单的选项,然后将显示表单内容。
顶部菜单有TopMenu
型号
{
isSelected: false
}
左侧菜单中LeftMenuCollection
包含此类模型
{
id: 0
label: "No label yet"
}
表单内容太长FormContentModel
,无法放在这里。
我有 2 种观点:TopMenuView
and LeftMenuView
forTopMenu
和LeftMenuCollection
. 但是表单内容视图(let call)的视图必须从两者中FormContentView
获取值,以便知道何时可见以及可见后显示什么。TopMenu
LeftMenuCollection
目前的想法:
用户的操作
LeftMenuView
将触发事件并FormContentView
根据选择的内容在隐藏的 DOM 中填充 HTML。TopMenuView
FormContentView
将触发可见。然后
FormContentView
会被存入自己的FormContentCollection
。
对于#1 和#2,我只使用了像这里这样的 PubSub 模型:在主干中从一个视图触发一个事件到另一个视图
但由于我使用 Backbone Boilerplate https://github.com/tbranyen/backbone-boilerplate。我打算这样做是因为 app 对象已经在 app.js 中创建:
app.PubSub = _.extend({}, Backbone.Events)
问题:
如何以及在哪里创建该 PubSub 对象?它在router.js中吗?
PubSub 是正确的方法吗?我也在考虑通过组合TopMenu
和LeftMenuCollection
在另一个下的“复合模型”,FormContentCollection
但互联网上的大多数人都说使用 PubSub。