把手阵列的json对象

时间:2012-07-20 15:48:47

标签: json handlebars.js

我需要使用把手模板一个json对象数组:(通过chrome控制台)[object,object,object,object]其中每个对象都由这个属性组成:name,surname,ecc。

我已经明白将把对象数组放在把手中是不可能的,但我们必须创建一个具有数组所有对象的所有属性的唯一对象。 任何人都可以建议我创建它的功能

1 个答案:

答案 0 :(得分:90)

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

例如,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>