Ember:如何在列表中每n个元素渲染一个元素?

问题描述:

搜索和阅读文档后,我找不到一个直接的解决了这个问题:Ember:如何在列表中每n个元素渲染一个元素?

从ArrayController渲染的项目清单,我想插入的位置或页面指示每N个元素。

我会很感激Ember方式的任何想法做到这一点!

通常我会假设,这可能在模板中处理,像...

each listitems 
    if index % 5 == 0 
     insert indicator 

...但灰烬不公开指数和把手的模板应该是免费的逻辑。

我能想到的第二种方法是使用ArrayController并为数组中的每个第n个对象设置一个属性,但为什么对象需要知道这个?设置一个属性感觉像混乱和很多潜在的错误。

任何想法将不胜感激!

你可以建立你自己的帮手。顺便说一句,你可以在每个里面使用_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