2013-03-26 72 views
2

就像我讀過的那樣,Ember.js目前不支持在沒有啓用實驗{{control}}助手的情況下擁有單個控制器的多個實例的概念。Ember.js具有多個主控視圖

據我瞭解,在灰燼-Y的方式做一個排序列表是:在執行排序,一拉控制器定義屬性:

App.BarController = Ember.ObjectController.extend({ 
    beers: (function() { 
    return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, { 
     sortProperties: ['rating'], 
     content: this.get('content.beers') 
    }) 
    }).property('content.beers') 
}); 

在我的應用程序,我想在酒吧中點按所有啤酒,並通過評級對這些啤酒進行分類。對於一個 bar,使用正常的主細節模式,這是非常簡單的,給出App.BarController。但是,如果我想要並排顯示兩個酒吧,那麼此模型會突然中斷。我不能在{{each}}內使用{{render}}(因爲render只能被調用一次),並且以下方案也會中斷,因爲數據綁定已更新爲僅顯示上一個

{{#each bar in controller}} 
    {{#with bar as controller}} 
    {{view BarView}} 
    {{/with}} 
{{/each}} 

最後,我不能只用{{view}}爲消除按排名對數據進行排序的能力。該視圖必須綁定到控制器或其他一些排序機制。

TL; DR:鑑於App.Beer一個App.BarhasMany情況下,用Ember.SortableMixin使得它可以直接創建一個排序列表。但是,如果我想同時顯示兩個App.Bar(爲了進行比較),則此方法會中斷,因爲它需要兩個實例App.BarController,這是不可能的。根據同一類的兩個對象的內容獲取兩個排序列表的正確方法是什麼?

回答

2

根據同一類的兩個對象的內容得到兩個排序列表的正確方法是什麼?

一般你想堅持一個控制器每列表。所以在這種情況下,我會建議說有App.LeftBarControllerApp.RightBarController

當然會有共享代碼,但可以重構爲基類或混入。

+1

並且當有N多個實例? – 2013-03-27 14:52:49

+0

我也很好奇這將如何擴展到不確定數量的實例。 – Kerrick 2013-04-15 01:21:40

+0

我不認爲我描述的方法能很好地適應n多個實例。在這種情況下,您可能會通過帶有itemController =「App.BarController」的'{{each}} helper'遍歷'n-Many'對象。 – 2013-04-15 02:16:12

相關問題