我正在利用handlebars.js作为我的模板引擎,并且我希望只有当它是模板配置对象中包含的数组中的最后一项时才显示条件段.
{
columns: [{<obj>},{<obj>},{<obj>},{<obj>},{<obj>}]
}
Run Code Online (Sandbox Code Playgroud)
我已经拉了一个助手来做一些相等/更大/更少的比较,并且已经成功识别出这样的初始项目但是没有运气来访问我的目标数组的长度.
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}}"
Run Code Online (Sandbox Code Playgroud)
有没有人知道一个快捷方式,不同的方法,以及一些把手的优点,这将使我不必撕裂到handlebars.js引擎,以确定最佳的课程?
我有一个Handlebars模板,我正在尝试从数组生成以逗号分隔的项目列表.
在我的Handlebars模板中:
{{#each list}}
{{name}} {{status}},
{{/each}}
Run Code Online (Sandbox Code Playgroud)
我希望,不要出现在最后一项上.有没有办法在Handlebars中执行此操作,还是需要回退到CSS选择器?
更新:基于克里斯托弗的建议,这是我最终实施的内容:
var attachments = Ember.CollectionView.extend({
content: [],
itemViewClass: Ember.View.extend({
templateName: 'attachments',
tagName: 'span',
isLastItem: function() {
return this.getPath('parentView.content.lastObject') == this.get('content');
}.property('parentView.content.lastObject').cacheable()
})
}));
Run Code Online (Sandbox Code Playgroud)
在我看来:
{{collection attachments}}
Run Code Online (Sandbox Code Playgroud)
和项目视图:
{{content.title}} ({{content.size}}) {{#unless isLastItem}}, {{/unless}}
Run Code Online (Sandbox Code Playgroud) 通常,人们希望将列表中的第一个和/或最后一个项目与其他项目区别对待.有没有办法用胡子做到这一点?行条纹怎么样?
(显然,在处理模板之后,人们总是可以使用jquery或其他任何方法来应用css类,或者其他什么,但我想知道模板级别的更多内容.)
我正在尝试使用以下模板生成一个带有小胡子的 JSON 文件:
{
"name": "{{customer_info.first_name}}",
"email": "{{contact_info.email}}",
"campaign": {
"campaignId": "{{contact_info.campaign.campaignId}}"
},
"tags": [
{{#contact_info.tags}}
{
"tagId": "{{tagId}}"
},
{{/contact_info.tags}}
]
}
Run Code Online (Sandbox Code Playgroud)
作为输出示例,我得到:
{
"name": "Antonio",
"email": "myemail@gmail.com",
"campaign": {
"campaignId": "pfft"
},
"tags": [
{
"tagId": "6prrtAP"
},
{
"tagId": "64rrrE9"
},
]
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是一个错误格式的 JSON,因为在数组中的最后一个元素之后有一个不需要的“,”。
你们中的任何人都可以帮助我解决这个问题并删除逗号吗?
非常感谢