Handlebars.js 不喜欢前面的方括号

eri*_*bae 2 javascript backbone.js handlebars.js

我正在使用 PHP 后端、Backbone.js 和 Handlebars.js。我的javascript请求数据,成功返回JSON数据(json_encode)。

当我将此 JSON 数据提供给把手模板时,它没有显示。我意识到 JSON 对象前后的方括号被 Handlebars.js “不喜欢”,并且没有显示。看看下面的代码。

var ArticleListView = Backbone.View.extend(
{
  el: $('#main'),
  render: function()
  {
    var template = Handlebars.compile($("#articles_hb").html());
    $(this.el).html(template([{"articles":[{"title" : "1"}, {"title" : "2"}]}]));
    return this;    
  }
});
Run Code Online (Sandbox Code Playgroud)

现在,如果我取出括号,它就可以正常工作。这是怎么回事?为什么首先有方括号?我该如何摆脱它们?

Mir*_*rko 5

调用 Handlebars 来循环遍历集合的输出是完全合理的。对于视图中的数据处理,数组也不是一个糟糕的设计决策。

Handlebars 具有处理数字或符号标识符的特殊语法,如此处所述。因此,更正确的答案是 Handlebars 可以像这样访问模板中的数组:

{{people.attributes.[0]}} // akin to people.attributes[0]
{{people.attributes.[1]}} // akin to people.attributes[1]
Run Code Online (Sandbox Code Playgroud)

输入:mails:[{headers: {subject: ["Hello Darling", "...another"]}}, ...more ]

<ul>
  {{#each mails}}
    <li>.
        {{headers.subject.[0]}}
    </li>
  {{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)