主干视图触发全局事件
Backbone view triggers a global event
在一个美好的世界里,主干视图通知底层模型,模型触发事件。将更新本身视为对事件的响应。
如果视图触发了一个事件,而另一个视图响应了这个事件,这合法吗。底层模型可能对此一无所知?
假设我的购物车是一个集合,现在我有一个视图,称之为带有项目计数和总成本的掠影视图,它有一个链接来查看购物车的详细内容。
因此,用户点击链接,视图会触发事件,但这会被控制器或除模型之外的任何其他方捕获。
将底层模型排除在游戏之外,是吗?合法吗?
Backbone的好处在于它的灵活性,而且它不需要严格遵守特定的体系结构。
因此,一个视图触发一个事件是没有问题的,而另一个视图直接响应该事件而不更改模型上的任何内容。
然而,需要问的问题是,实现体系结构的最干净的方法是什么。
在我看来,对于你描述的情况,我会使用全局事件对象来进行两个视图之间的通信。
下面是一些示例代码
var globalEvents = {};
_.extend(globalEvents, Backbone.Events);
var GlimpseView = Backbone.View.extend({
events: {
'click a.see-verbose': 'onSeeVerboseClick'
},
onSeeMoreClick: function() {
globalEvents.trigger('seeVerbose', this.model);
}
});
var VerboseView = Backbone.View.extend({
initiliaze: function() {
globalEvents.on('seeVerbose', onSeeVerbose, this);
},
onSeeVerbose: function(model) {
// code to render the verbose view
}
});
相关文章:
- 主干视图触发全局事件
- 通过进程使用 NodeJS 全局事件是个好主意吗?
- 关于性能,最好的方法是什么:setInterval()或body上的全局事件
- 通知全局事件组件的最佳方式
- FRP、角度和全局事件处理程序
- XML 声明中的 NativeScript 全局事件处理程序
- 访问Firefox中的全局事件对象
- 在单个全局事件处理程序中捕获所有单击事件是否是一个坏主意
- 独特的主干事件总线,也可以共享全局事件
- Dropzone JS全局事件
- 创建一个require js插件,监听骨干js全局事件
- Node.js请求模块全局事件
- Angular中的全局事件处理程序
- 如何在EaselJS中触发和监听全局事件
- jQuery全局事件监听器
- Jquery触发自定义全局事件
- 如何在使用requireJS时监听全局事件
- 在React.js中,我如何设置一个简单的全局事件系统来在组件之间进行通信?
- AngularJS:在指令中绑定到全局事件的最佳方法是什么
- 在jQuery 1.9上触发全局事件