如何在模板中没有定义名称的情况下迭代车把模板中的数组

jma*_*mav 16 backbone.js handlebars.js marionette

我有模特:

[
  {
    "ID": 5,
    "email": "xx@vflbg.com"
  },
  {
    "ID": 6495,
    "email": "email@monkey.com"
  }
]
Run Code Online (Sandbox Code Playgroud)

在把手中迭代的代码:

   {{#each xxx}}
    <p>{{email}}</p>
   {{/each}}
Run Code Online (Sandbox Code Playgroud)

我该如何定义xxx?

如果JSON在模型中有名称,如:

   users: [
      {
        "ID": 5,
        "email": "xx@vflbg.com"
      },
      {
        "ID": 6495,
        "email": "email@monkey.com"
      }
    ]
Run Code Online (Sandbox Code Playgroud)

我会简单地在手把中迭代,如:

   {{#each users}}
    <p>{{email}}</p>
   {{/each}}
Run Code Online (Sandbox Code Playgroud)

Dav*_*any 34

这也有效:

{{#each this}}
<p>{{email}}</p>
{{/each}}
Run Code Online (Sandbox Code Playgroud)


mu *_*ort 16

如果你有这个:

var a = [
  {
    "ID": 5,
    "email": "xx@vflbg.com"
  },
  {
    "ID": 6495,
    "email": "email@monkey.com"
  }
];
Run Code Online (Sandbox Code Playgroud)

然后在调用编译模板时提供所需的名称:

var t = Handlebars.compile($('#t').html());
var h = t({ users: a });
Run Code Online (Sandbox Code Playgroud)

这将为您留下您想要的HTML h.

演示:http://jsfiddle.net/ambiguous/ZgVjz/

如果您有根据数据构建的集合:

var c = new C(a);
Run Code Online (Sandbox Code Playgroud)

然后你就像这样调用模板:

var h = t({ users: c.toJSON() });
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/ambiguous/uF3tj/

  • 这有效,但[Dave Stibrany](http://stackoverflow.com/users/546741/dave-stibrany)[下](http://stackoverflow.com/a/17329692/591374)的答案要好得多解. (3认同)