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
不错的解决方案,但有一个警告:_view.contentIndex是一个私有财产,并可能会在未来的Ember.js版本消失,恕不另行通知。所以我仍然在寻找Ember方式来做到这一点。 ;-) – mphasize 2014-09-05 11:58:04