如何使用 Handlebars 排除 array/object 元素?
How to exclude an array/object element with Handlebars?
现在我有这个 json 结构
"administration" : [
{
"name" : "Sigfried Bermudez",
"role" : "Associate Director"
},
{
"name" : "Karen Madrigal",
"role" : "QA Manager"
},
{
"name" : "Jorge Lopez",
"role" : "Project Manager"
}
]
如您所见,该数组中的最后一个元素表示 "role" : "Project Manager"
,而我从视图中排除该元素的方式是这样
{{#each chart-container.[3].administration}}
{{#unless @last}}
<span>{{@key}} {{this.name}}</span>
{{/unless}}
{{/each}}
但是那个元素改变了位置呢?
我需要知道的是我是否可以做类似 {{#unless this.role.toLowerCase().indexof("project")}}
的事情,或者在这种情况下最好的选择是什么?如果 HTML 有办法做到这一点,那就太棒了:)
工作示例:JsFiddle
使用 Handlebars 助手:
var entry_template = document.getElementById('entry-template').innerHTML;
var data = [
{
"name" : "Sigfried Bermudez",
"role" : "Associate Director"
},
{
"name" : "Karen Madrigal",
"role" : "QA Manager"
},
{
"name" : "Jorge Lopez",
"role" : "Project Manager"
}
]
Handlebars.registerHelper("ifvalue", function(conditional, options) {
if (conditional !== options.hash.notequals) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
var template = Handlebars.compile(entry_template);
var template_with_data = template(data);
document.getElementById('data').insertAdjacentHTML('afterbegin', template_with_data);
模板:
<script id="entry-template" type="text/x-handlebars-template">
{{#each this}}
{{#ifvalue this.role notequals="Project Manager"}}
{{this.name}}
{{/ifvalue}}
{{/each}}
</script>
<div id="data">
</div>
现在我有这个 json 结构
"administration" : [
{
"name" : "Sigfried Bermudez",
"role" : "Associate Director"
},
{
"name" : "Karen Madrigal",
"role" : "QA Manager"
},
{
"name" : "Jorge Lopez",
"role" : "Project Manager"
}
]
如您所见,该数组中的最后一个元素表示 "role" : "Project Manager"
,而我从视图中排除该元素的方式是这样
{{#each chart-container.[3].administration}}
{{#unless @last}}
<span>{{@key}} {{this.name}}</span>
{{/unless}}
{{/each}}
但是那个元素改变了位置呢?
我需要知道的是我是否可以做类似 {{#unless this.role.toLowerCase().indexof("project")}}
的事情,或者在这种情况下最好的选择是什么?如果 HTML 有办法做到这一点,那就太棒了:)
工作示例:JsFiddle
使用 Handlebars 助手:
var entry_template = document.getElementById('entry-template').innerHTML;
var data = [
{
"name" : "Sigfried Bermudez",
"role" : "Associate Director"
},
{
"name" : "Karen Madrigal",
"role" : "QA Manager"
},
{
"name" : "Jorge Lopez",
"role" : "Project Manager"
}
]
Handlebars.registerHelper("ifvalue", function(conditional, options) {
if (conditional !== options.hash.notequals) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
var template = Handlebars.compile(entry_template);
var template_with_data = template(data);
document.getElementById('data').insertAdjacentHTML('afterbegin', template_with_data);
模板:
<script id="entry-template" type="text/x-handlebars-template">
{{#each this}}
{{#ifvalue this.role notequals="Project Manager"}}
{{this.name}}
{{/ifvalue}}
{{/each}}
</script>
<div id="data">
</div>