2014-09-30 46 views
0

我已經成功地實施了ArrayController的定義的ItemController它是這樣的:如何在Ember中爲itemController設置itemView?

export default Ember.ArrayController.extend(InboxTab, { 
    itemController: 'messages.message-list-item' 
}); 

然後在模板陣列控制器我只是做

{{#each}} 
<li {{action 'someActionFromItemController'}}>{{someComputedPropertyFromItemController}}</li> 
{{/each}} 

這個偉大的工程,我可以處理很多行動和計算每個項目,但我遇到困難與每個項目相關的視圖。該文檔沒有幫助。 ItemView控件的唯一實例是本文中: http://emberjs.com/api/classes/Ember.CollectionView.html#sts=Specifying itemViewClass

,這裏的例子似乎圍繞着添加視圖模板,並指定從那裏的內容和我不知道如何適用於我的方式正在做。

回答

0

一種不同的方式,你可以這樣做:

{{#each itemController='messages.message-list-item'}} 
{{#view your-view}} 
    {{action}}{{computed property from view/controller}} 
{{/view}} 
{{/each}} 

指定循環中的項目控制器,敷在視圖中的行爲和屬性 - 這意味着要麼這些也可以被稱爲或視圖設置。

+0

謝謝,我只是終於偶然發現,以及它是不是可以通過JS像itemController可以設置? – mobetta 2014-09-30 21:25:13

+0

問題是,通過模板,通過執行JS的intead。我無法保持乾燥,必須重複代碼。 – mobetta 2014-09-30 21:38:33

+0

您仍然可以將控制器用於操作或計算屬性,或者可以在插入模板時通過視圖傳入參數。如果你想保持乾燥,你也可以看看組件。從上面的代碼很難看出爲什麼切換到視圖會導致重寫代碼的問題。 – Craicerjack 2014-10-01 09:54:50

0

我認爲這樣做最好的方法是與itemViewClass,請參閱api的全部細節。

{{#each message itemController='messageListItem' itemViewClass='messageListItem'}} 
    {{! Assumes you have view defined in an App.MessageListItemView defined in your JavaScript}} 
    {{action}} 
{{/each}} 
相關問題