Backbone:沟通实体的最佳方式

时间:2013-12-21 11:32:04

标签: javascript backbone.js backbone-events

在我的示例中,在Backbone App中连接不同实体的最佳方法是什么:

我在页面上有一些项目(例如商品),我需要对它们进行一些操作。所以我有一个Balance.Model来限制某些动作(例如,我只能标记带有一些标志的N个项目,可能是颜色)。因为我有Items.CollectionView.Actions(用于渲染菜单链接)。此外,我有SelectedItems.Collection来保留Item.Models,通过复选框检查操作。

所以请处理一些我需要做的事情:

Action.onClick → Balance.checkLimits → SelectedItems.each(Item) → Item.processAction 

我需要传达Actions,Balance和SelectedItems集合来处理带有已检查项目的操作。 什么是最好的方法呢?触发器/ listenTo?将一些模型保留在另一个模型中?

2 个答案:

答案 0 :(得分:0)

您所描述的内容听起来像是控制器在视图和模型之间缓解的责任。 AFAIK Backbone没有很好的标准方法来做到这一点。我建议看看Backbone Marionette http://marionettejs.com/。它在路由/视图/应用程序结构方面做了很多工作,vanilla主干已经不再支持灵活性。查看http://coding.smashingmagazine.com/2013/02/11/introduction-backbone-marionette/以获得简要介绍。

答案 1 :(得分:0)

嗯......看来你正在做一些特定领域的事情。为此,我会将最通用的东西提取到一个问题中,并使这个问题在没有视图的情况下工作......

然后我会创建一个包含更具体逻辑的类,然后使用这种技术混合先前创建的关注:http://coffeescriptcookbook.com/chapters/classes_and_objects/mixins

然后,如果像onClick那样在UI上发生了某些事情,我会在我的视图类中拦截它,然后让我担心处理它......

这会将UI特定逻辑与特定于域的逻辑分开+创建可重用的问题。