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

标签 javascript backbone.js handlebars.js

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

当我将此 JSON 数据提供给 Handlebars 模板时,它没有显示。我意识到我的 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;    
  }
});

现在,如果我把括号去掉,它就可以正常工作了。这是怎么回事?为什么首先要使用方括号?我该如何摆脱它们?

最佳答案

调用 Handlebars 来循环访问集合的输出是完全合理的。 此外,对于 View 中的数据处理来说,数组并不是一个糟糕的设计决策。

Handlebars 有一种特殊的语法来处理数字或符号标识符,as described here 。因此,更正确的答案是 Handlebars 可以访问模板中的数组,如下所示:

{{people.attributes.[0]}} // akin to people.attributes[0]
{{people.attributes.[1]}} // akin to people.attributes[1]

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

<ul>
  {{#each mails}}
    <li>.
        {{headers.subject.[0]}}
    </li>
  {{/each}}
</ul>

关于javascript - Handlebars.js 不喜欢前面的方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7344132/

相关文章:

javascript - 尝试使用javascript下载所有谷歌搜索图像

javascript - 使用 Backbone.js 填充在 save() 上发送的 JSON 对象

javascript - 推送到 Backbone 中的属性

javascript - 没有为 Handlebars 传递上下文

node.js - Handlebarsjs 更改每个辅助上下文

javascript - 定义 JSON 以满足需求

javascript - 如何使用 Mocha 测试全局变量?

javascript - window.crypto.subtle.encrypt 用于 AES-CBC 的填充是什么

javascript - AngularJS 或 Backbone 适合初学者

javascript - typeahead.js 自动完成中的源是什么,源应该包含什么?