【问题标题】:Backbone Design - Multiple Views, Same Model, separation of events主干设计 - 多视图、同一模型、事件分离
【发布时间】:2015-02-12 00:37:28
【问题描述】:

我在 JS 和 Backbone 方面经验丰富,但希望您能帮助集思广益,为以下问题提供最佳实践解决方案:

有两种观点。它们在页面中并排运行。 这两个视图都传递同一个模型实例。 这两个视图都有可以更新模型的操作。

您认为如何使用 Backbone 的事件驱动编程来区分视图之间触发的事件的最佳方式是什么?

可能的情况是: 用户在视图 A 上执行的操作以无效的方式更新模型。但由于用户没有在视图 B 上执行此操作,因此不应在此处通知他们。

【问题讨论】:

  • 对所提供的答案有任何反馈吗?

标签: javascript design-patterns backbone.js


【解决方案1】:

您可以使用中间对象来管理存储库(与数据库发生连接的对象)与视图的实例化/操作之间的流程。
您可以让中间对象(通用控制器)在使用修改后的模型或集合重新渲染视图之前进行验证,而不是从视图中将模型绑定到视图。
通过使用事件聚合器,您可以从视图中触发来自视图的事件,并从“控制器”对象中侦听事件,后者将依次执行所需的自定义操作。

【讨论】:

    【解决方案2】:

    使用自定义事件似乎很简单。只需将每个视图的操作视为不同,并为每个视图以不同的方式命名事件(例如 this.trigger('view1:event1')、this.trigger('view2:event2'))。

    确保视图订阅了这些特定的自定义事件,以避免在两个视图上触发事件的操作发生冲突(例如属性更新)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多