2016-02-29 34 views
0

现在我有此JSON结构如何使用Handlebars排除数组/对象元素?

"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做到这一点,那将是真棒:)

回答

2

工作例如:JsFiddle

使用把手帮手:

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> 
相关问题