使Handlebars使用一系列对象

时间:2013-03-13 16:28:13

标签: jquery handlebars.js

我有一个我想要把手处理的对象

stock= [
{
  trailer: "TT6565",
  usual  : "Jack",
  group  : "Mercs"

},
{
  trailer: "TT6589",
  usual  : "Paul",
  group  : "Mercs"
}
]

这是一个示例,但在我的脚本中,对象是从ajax请求创建的。

这是我的手柄脚本

<script id="mwl707" type="text/x-handlebars-template">

<div id='vehicles' class='wrapper'>
<div class='divd spacer'>&nbsp</div>

    {{#each stock}}
        <div id='{{group}}' title='Driver Details' class='divd {{group}}' >
        {{trailer}} + "<br>" + {{usual}}
        </div>
    {{/each}}

</div>

</script>

 var source = $("#mwl707").html();
 var template = Handlebars.compile(source);

 $("#thisPage").append(template( stock ));

问题是迭代(每个)部分没有通过我的列表运行,我认为把手不喜欢对象,但有什么办法围绕这个?或者我的代码错了?有什么帮助吗?

1 个答案:

答案 0 :(得分:5)

尝试:

{{#each this}}
    <div id='{{group}}' title='Driver Details' class='divd {{group}}' >
        {{trailer}} + "<br>" + {{usual}}
    </div>
{{/each}}

请参阅我的示例:http://jsfiddle.net/svZws/

您使用{{#each this}}的原因是因为您将stock对象传递到模板中,因此在模板引擎的上下文中,this引用您的stock对象。

如果您使用{{#each stock}},则表示 stock 是您传递到template()函数的对象内的属性名称。