我正在开发一个包含条目列表的主干应用程序,非常类似于示例应用程序Todos (http://documentcloud.github.com/backbone/examples/todos/index.html)。
因此,我有一个App视图和每个列表项的视图。现在,假设我有一个全局编辑按钮。App视图将处理一次单击,然后我想要做的是告诉每个列表视图显示一个删除按钮。
在下面的屏幕截图中(来自Spotify),按下编辑按钮将导致所有列表视图更改外观。
用Backbone做这件事的最佳方式是什么?我需要遍历所有列表视图并调用一个editMode函数。但是App视图(开箱即用)并不知道列表视图。

发布于 2011-09-24 04:18:51
我的两点意见:你可以用backbone.js做一个简单的"hack“,实际上拥有一个可以在视图之间通信的发布/订阅:
以下内容(未经测试):
var EventBus = Backbone.Model.extend({
   publish: function(event, args){
       this.trigger(event, args);
   },
   subscribe: function(event, args) {
       this.bind(event, args);
   }
});你基本上就明白了。现在,对于每个视图,让它“绑定”到这个EventBus (因为视图只能绑定到backbone中的模型/集合)-你基本上只是使用方法名称publish/subscribe来与这样一个模型的命名同步,但你可以选择不这样做。在这种情况下,只需创建一个空的EventBus“类”,并将每个视图绑定到它:)
因此,每个视图只需要耦合到这个EventBus,并对接收到的事件执行操作!Backbone.js在内部处理此设计模式的所有工作,因此您几乎可以免费获得它:)
上面的代码可能不会按原样运行,但是否可以让您对此有所了解……
https://stackoverflow.com/questions/7485657
复制相似问题