Backbone.js 视图触发全局事件

yshpjwxd  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(208)

在一个美好的世界里, Backbone.js 视图通知底层模型,模型触发事件。视图更新自己作为对事件的响应。
如果一个视图触发了一个事件,而另一个视图响应了这个事件,这是合法的吗?底层模型甚至可能对此毫无头绪?
假设我有一个购物车是一个集合,现在有一个我有一个视图,称之为带有项目计数和总成本的浏览视图,其中有一个链接可以查看购物车的详细内容。
因此,用户点击链接,视图触发事件,但这会被控制器或除模型外的任何其他方捕获。
把底层模型排除在游戏之外,是吗?合法吗?

7vux5j2d

7vux5j2d1#

Backbone的优点是它的灵活性,它不要求您严格遵守特定的体系结构。
因此,一个视图触发一个事件是没有问题的,而另一个视图直接响应这个事件,而不改变模型上的任何内容。
然而,需要问的问题是,实现该体系结构的最干净的方法是什么。
在我看来,在您描述的情况下,我会使用一个全局事件对象,让这两个视图相互通信。
下面是一些示例代码

  1. var globalEvents = {};
  2. _.extend(globalEvents, Backbone.Events);
  3. var GlimpseView = Backbone.View.extend({
  4. events: {
  5. 'click a.see-verbose': 'onSeeVerboseClick'
  6. },
  7. onSeeMoreClick: function() {
  8. globalEvents.trigger('seeVerbose', this.model);
  9. }
  10. });
  11. var VerboseView = Backbone.View.extend({
  12. initiliaze: function() {
  13. globalEvents.on('seeVerbose', onSeeVerbose, this);
  14. },
  15. onSeeVerbose: function(model) {
  16. // code to render the verbose view
  17. }
  18. });
展开查看全部

相关问题