2014-09-04 103 views
0

搜索和閱讀文檔後,我找不到一個直接的解決了這個問題:Ember:如何在列表中每n個元素渲染一個元素?

從ArrayController渲染的項目清單,我想插入的位置或頁面指示每N個元素。

我會很感激Ember方式的任何想法做到這一點!

通常我會假設,這可能在模板中處理,像...

each listitems 
    if index % 5 == 0 
     insert indicator 

...但灰燼不公開指數和把手的模板應該是免費的邏輯。

我能想到的第二種方法是使用ArrayController併爲數組中的每個第n個對象設置一個屬性,但爲什麼對象需要知道這個?設置一個屬性感覺像混亂和很多潛在的錯誤。

任何想法將不勝感激!

回答

5

你可以建立你自己的幫手。順便說一句,你可以在每個裏面使用_view.contentIndex來訪問索引。所以你可以寫一個自定義的幫手,基本上插入所需的HTML。

Ember.Handlebars.registerBoundHelper('indicator', function(index,options){ 
     var html = ''; 
     if(index%2) { 
      html = '<hr />'; 
     } 
     return new Ember.Handlebars.SafeString(html); 
}); 

並通過傳遞索引來調用它。這是工作jsbin http://emberjs.jsbin.com/niguwa/1/edit

+0

不錯的解決方案,但有一個警告:_view.contentIndex是一個私有財產,並可能會在未來的Ember.js版本消失,恕不另行通知。所以我仍然在尋找Ember方式來做到這一點。 ;-) – mphasize 2014-09-05 11:58:04

相關問題