首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Backbone.js:视图之间的通信

Backbone.js:视图之间的通信
EN

Stack Overflow用户
提问于 2011-09-20 21:09:02
回答 2查看 17.6K关注 0票数 32

我正在开发一个包含条目列表的主干应用程序,非常类似于示例应用程序Todos (http://documentcloud.github.com/backbone/examples/todos/index.html)。

因此,我有一个App视图和每个列表项的视图。现在,假设我有一个全局编辑按钮。App视图将处理一次单击,然后我想要做的是告诉每个列表视图显示一个删除按钮。

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

用Backbone做这件事的最佳方式是什么?我需要遍历所有列表视图并调用一个editMode函数。但是App视图(开箱即用)并不知道列表视图。

EN

Stack Overflow用户

发布于 2011-09-24 04:18:51

我的两点意见:你可以用backbone.js做一个简单的"hack“,实际上拥有一个可以在视图之间通信的发布/订阅:

以下内容(未经测试):

代码语言:javascript
运行
复制
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在内部处理此设计模式的所有工作,因此您几乎可以免费获得它:)

上面的代码可能不会按原样运行,但是否可以让您对此有所了解……

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7485657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档