2012-08-15 125 views
2

當有一組對象(例如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。但是,爲什麼我在不使用它的功能時使用框架呢?

請幫助我來決定。如果還有什麼更好的,我準備好遵循你的意見。請解釋您首選解決方案的優勢(和可能的缺陷)。

回答

1

控制器是最適合用於管理應用程序狀態。我看到的大部分代碼都是代理單個對象或數組,所以框架類作爲一個起點是有意義的。我還沒有看到有人用它們來管理關聯。爲此,我建議看一看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

相關問題