我正在利用handlebars.js作为我的模板引擎,并且我希望只有当它是模板配置对象中包含的数组中的最后一项时才显示条件段 .
{
columns: [{<obj>},{<obj>},{<obj>},{<obj>},{<obj>}]
}
我已经拉了一个助手来做一些相等/更大/更少的比较,并且已经成功识别出这样的初始项目但是没有运气来访问我的目标数组的长度 .
Handlebars.registerHelper('compare', function(lvalue, rvalue, options) {...})
"{{#each_with_index columns}}"+
"<div class='{{#equal index 0}} first{{/equal}}{{#equal index ../columns.length()}} last{{/equal}}'>"+
"</div>"+
"{{/each_with_index}}"
有没有人知道一个快捷方式,不同的方法,以及一些把手的优点,这将使我不必撕裂到handlebars.js引擎,以确定最佳的课程?
5 回答
如果您只是尝试处理数组的第一项,这可能会有所帮助
{{#each data-source}}{{#if @index}},{{/if}}"{{this}}"{{/each}}
@index由每个帮助程序提供,对于第一个项目,它将等于零,因此可以由if帮助程序处理 .
我写的一个快速帮手就是:
然后你可以写:
从Handlebars 1.1.0开始,第一个和最后一个已成为每个助手的原生 . 见票#483 .
用法类似于Eberanov's helper类:
解:
利用以下博客中的助手和主旨......
https://gist.github.com/2889952
http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/
Notice the starting index is correctly 1.
我从Matt Brennan对helper做了一些改进,你可以将这个帮助器与对象或数组一起使用,这个解决方案需要Underscore库:
用法: