更多在Ember应用程序中的相同类型的ArrayControllers

更多在Ember应用程序中的相同类型的ArrayControllers

问题描述:

当有一组对象(例如Contact s)由App.contactsController处理并且每个联系人都有与他相关的Message s的数组时,最佳做法是什么?在初始化时,对象,并将其推到contactsController,这样更多在Ember应用程序中的相同类型的ArrayControllers

1)为每个联系人创建messagesController:

是来到我的脑海的方法

App.contactsController.pushObject(App.Contact.create({ 
    "id" : some_id, 
    "name" : some_name, 
    "messages" : App.MessagesController.create(); 
})); 

2)仅实例化一个messagesController用于应用程序并以某种方式过滤消息。这似乎是一个非常糟糕的解决方案,但它绝对是一种选择。

3)根本不要使用ArrayController。但是,为什么我在不使用它的功能时使用框架呢?

请帮助我来决定。如果还有什么更好的,我准备好遵循你的意见。请解释您首选解决方案的优势(和可能的缺陷)。

控制器是最适合用于管理应用程序状态。我看到的大部分代码都是代理单个对象或数组,所以框架类作为一个起点是有意义的。我还没有看到有人用它们来管理关联。为此,我建议看一看ember-data:https://github.com/emberjs/data

如果你打算在不使用ember-data的情况下这样做,我会推荐一个修改版本的选择#1。你仍然给了扩展ArrayController的ContactsController,但是不要使用另一个控制器作为消息的内部数组。取而代之的是使用简单对象的内部数组或引用App.Message模型的实例的message_id列表。

希望这有助于...

+1

BTW卢克 - 苦最近发表了精彩的演讲对这个话题 - 我会强烈建议在speakerdeck看着自己的幻灯片:https://speakerdeck.com/u/lukemelia/ p /架构-余烬点-JS-应用 – 2012-08-28 16:17:36