Backbone.js:视图之间的通信

Seb*_*ian 32 views backbone.js

我正在开发一个包含条目列表的Backbone应用程序,很像示例应用程序Todos(http://documentcloud.github.com/backbone/examples/todos/index.html).

所以,我有一个App视图和每个列表项一个视图.现在,假设我有一个全局编辑按钮.应用程序视图将处理单击,然后我想要做的是告诉每个列表视图显示删除按钮.

在下面的屏幕截图中(来自Spotify),按"编辑"按钮会导致所有列表视图更改外观.

使用Backbone的最佳方法是什么?我需要迭代所有列表视图并调用editMode函数.但App视图(开箱即用)不知道列表视图..

在此输入图像描述

Der*_*ley 41

我在一段时间内写了一篇文章,讨论了几种不同的选项来协调观点:http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-在骨干-JS /

在您的情况下,我建议使用我在该文章中描述的事件聚合器.您可以让每个项目视图侦听"editmode"事件或类似事件.当此事件触发时,每个侦听它的视图都会自动更新以进入编辑模式.然后,当您单击"完成"时,您将执行相反的操作 - 发送"viewmode"事件或类似事件,并让每个视图都适当地更新自己.

  • 来自牧羊犬的Thurloat为您的解决方案发布了一个非常鼓舞人心的扩展,他推荐使用**查看工厂**.他的建议允许1)消除将eventBus显式传递给每个视图(或声明eventBus全局)和2)以声明骨干方式声明全局事件绑定的需要,这是对可读性的巨大改进.这是完整的文章http://thurloat.com/2012/01/21/backbonejs-readable-modular-testable-views - 这是在coffeescript (6认同)