一尘不染

json对象的handlebars数组

json

我需要用车把一个json对象数组模板化:(通过chrome控制台)[object,object,object,object]其中每个对象都由以下属性组成:名称,姓氏,ecc。

我知道不可能将对象数组放在车把中,但是我们必须创建具有数组所有对象的all属性的唯一对象。谁能建议我一个函数来创建它


阅读 315

收藏
2020-07-27

共1个答案

一尘不染

您可以在调用模板时将数组设置为包装对象的属性。

例如,以objects作为持有财产

var an_array = [
    {name: "My name"},
    {name: "Another name"}
];

var source   = /* a template source*/;
var template = Handlebars.compile(source);
var wrapper  = {objects: an_array};

console.log(template(wrapper));

并且您的模板可以如下使用此属性:

<ul>
    {{#each objects}}
        <li>{{name}}</li>
    {{/each}}
</ul>

和演示http://jsfiddle.net/YuvNY/1/

var an_array=[

    {name:"My name"},

    {name:"Another name"},

];



var source   = $("#src").html();

var template = Handlebars.compile(source);

$("body").append( template({objects:an_array}) );


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v2.0.0.js"></script>



<script type='text/template' id='src'>

<ul>

  {{#each objects}}

      <li>{{name}}</li>

  {{/each}}

</ul>

</script>

或者,您可以将数组直接传递给模板,并each在上下文设置为.(点)的情况下调用帮助程序

var template = Handlebars.compile(source);
console.log(template(an_array));



<ul>
    {{#each .}}
        <li>{{name}}</li>
    {{/each}}
</ul>

http://jsfiddle.net/nikoshr/YuvNY/32/

var an_array=[

    {name:"My name"},

    {name:"Another name"},

];



var source   = $("#src").html();

var template = Handlebars.compile(source);

$("body").append( template(an_array) );


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v2.0.0.js"></script>



<script type='text/template' id='src'>

<ul>

  {{#each .}}

      <li>{{name}}</li>

  {{/each}}

</ul>

</script>
2020-07-27