1

最近有很多问题,尽管我不能说它们正在加快我的发展步伐。而只是让我感到不舒服。需要把我的头包起来。

在一个不错的世界中,主干视图通知底层模型,模型触发事件。将更新本身视为对事件的响应。

如果视图触发一个事件并且另一个视图响应该事件是否合法?底层模型甚至可能对此一无所知?

假设我有一个购物车是一个集合,现在我有一个视图,称之为一瞥视图,其中包含项目计数和总成本,其中有一个链接可以查看购物车的详细内容。

因此用户单击链接视图会触发事件,但这会被控制器或模型以外的任何其他方捕获。

将底层模型排除在游戏之外,是吗?合法的?

4

1 回答 1

4

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
  }
});
于 2012-09-05T13:55:01.480 回答