我正在创建一张幻灯片 - 所以每个div都有3张图片,如此
<div>
<img />
<img />
<img />
</div>
</div>
<img />
<img />
<img />
</div>
互联网上的所有代码都没有完美运作 -
http://jaketrent.com/post/every-nth-item-in-handlebars-loop/
http://rockycode.com/blog/handlebars-loop-index/
http://www.arlocarreon.com/blog/javascript/handlebars-js-everyother-helper/
和是包括堆栈溢出中的答案。
任何人都可以提供一些在当前时期(Ember / Handlebar版本)完美运行的代码吗?
我有一系列模型,所以我想做一些像
这样的事情{{#each model}}
{{if index % 3 == 0}}
{{/if}}
{{/each}}
答案 0 :(得分:15)
我发现index
或@index
在模板中不起作用,但您可以在帮助程序中访问它。
我在这里做了一个例子来证明这一点:
http://jsbin.com/egoyay/1/edit
修改:添加要回答的代码,演示{{else}}
阻止
把手助手(非使用Ember):
Handlebars.registerHelper('ifIsNthItem', function(options) {
var index = options.data.index + 1,
nth = options.hash.nth;
if (index % nth === 0)
return options.fn(this);
else
return options.inverse(this);
});
用法:
<ol>
{{#each model}}
<li>
{{#ifIsNthItem nth=3}}
Index is a multiple of 3
{{else}}
Index is NOT a multiple of 3
{{/ifIsNthItem}}
</li>
{{/each}}
</ol>
答案 1 :(得分:2)
如果在itemViewClass
帮助器中指定each
,则会为每个项目创建一个视图并设置contentIndex属性:
{{#each model itemViewClass="Ember.View"}}
{{view.contentIndex}}
{{/each}}
在Ember v1.1.0中测试