Javascript 带主干样板的PubSub?
问题: 我在屏幕上有3个UI组件: 顶部菜单:选项true或false 左菜单:项目列表,如A、B、C、D 形式内容:一种形式。它的可见或隐藏取决于顶部菜单选项的值。它的内部内容根据选择的左侧菜单项而有所不同。例如,选定的A将显示2个输入框,而B将显示3个输入框,等等。。。 其工作方式是,用户将选择左侧菜单项,然后单击顶部菜单的选项,表单内容将显示出来 Top menu具有TopMenu型号 左菜单有LeftMenuCollection,其中包含这样的模型Javascript 带主干样板的PubSub?,javascript,backbone.js,requirejs,underscore.js,publish-subscribe,Javascript,Backbone.js,Requirejs,Underscore.js,Publish Subscribe,问题: 我在屏幕上有3个UI组件: 顶部菜单:选项true或false 左菜单:项目列表,如A、B、C、D 形式内容:一种形式。它的可见或隐藏取决于顶部菜单选项的值。它的内部内容根据选择的左侧菜单项而有所不同。例如,选定的A将显示2个输入框,而B将显示3个输入框,等等。。。 其工作方式是,用户将选择左侧菜单项,然后单击顶部菜单的选项,表单内容将显示出来 Top menu具有TopMenu型号 左菜单有LeftMenuCollection,其中包含这样的模型 { id: 0 label: "No
{
id: 0
label: "No label yet"
}
表单内容的FormContentModel太长,无法放入此处
我有两个视图:TopMenuView和LeftMenuView用于TopMenu和LeftMenuCollection。但是表单内容视图的视图let调用FormContentView必须从TopMenu和LeftMenuCollection中获取值,以便知道何时可见以及在可见后显示什么
当前想法:
用户对LeftMenuView的操作将触发事件,FormContentView将根据所选内容在隐藏的DOM中填充HTML
TopMenuView将触发FormContentView可见
然后FormContentView将保存到它自己的FormContentCollection中
对于1和2,我只需要使用PubSub模型,如下所示:
但因为我用的是骨干样板。我计划这样做是因为app.js中已经创建了app对象:
app.PubSub = _.extend({}, Backbone.Events)
问题:
如何以及在何处创建PubSub对象?它在router.js中吗
这样做正确吗?我也在考虑复合模型,将TopMenu和LeftMenuCollection组合到另一个FormContentCollection下,但大多数互联网用户都说使用PubSub。定义应用程序变量后,立即创建PubSub 我更喜欢将PubSub直接连接到主干对象,并在主干加载后立即进行连接。我以前写过: 下面是另一个可能更简单的想法: 创建新模型并在所有视图之间共享 请注意,您可以将第二个模型添加到视图中,它们不必设置为view.model
左视图和俯视图可以。设置其属性,表单视图可以使用。在“更改”上,函数。。。并通过显示/隐藏视图进行响应。您的链接非常棒。我添加了app.notif=..extend{},Backbone.Events;在app.js中,并将其传递给Views var myView=new myView{notif:app.notif}。所以在视图对象中,我只需执行this.options.notif.trigger。非常有用!谢谢。添加第三个集合对象并使用它保持所选对象的状态的另一个想法:
app.PubSub = _.extend({}, Backbone.Events)