【问题标题】:Handlebars displaying JSON data显示 JSON 数据的把手
【发布时间】:2019-02-12 18:45:25
【问题描述】:

我正在尝试使用把手迭代 JSON 数组中的每个项目。但是我无法显示下面的任何 JSON 数据。这是我的代码:

HTML

{{#each entries}}
  <div class="entry">
    <h1>{{day}}</h1>
    <div class="body">
      {{content}}
    </div>
  </div>
{{/each}}

...

<script>

var entries = {

  entries: [
    {
      day: "Day 1",
      content: "THIS is TEST CONTENT"
    },
    {
      day: "Day 2",
      content: "THIS is TEST CONTENT2"
    }
  ]
};

</script>

我尝试了同样的方法 - http://tryhandlebarsjs.com/ 并且效果很好,似乎有什么问题?谢谢。

【问题讨论】:

  • 请同时显示您正在编译和渲染模板的部分
  • 试试#each entries.entries
  • 你试过this。例如。 {{this.day}}, {{this.content}}?
  • 谢谢,但是 entries.entries 不起作用,this.day 也不起作用。至于编译,我在网上尝试了一些不同的建议,但都没有奏效,所以我希望有人能给出正确的编译和渲染方法?
  • someone could show the correct way of compiling and rendering? handlebarsjs.com

标签: javascript json handlebars.js


【解决方案1】:

试试这个实现的流程:

HTML:

<h1>Handlebars JS Example</h1>
<script id="some-template" type="text/x-handlebars-template"> <table>
    <thead> 
        <th>Name</th> 
        <th>Job Title</th> 
        <th>Twitter</th> 
    </thead> 
    <tbody> 
        {{#users}} 
        <tr> 
            <td>{{person.firstName}}</td> 
            <td>{{jobTitle}}</td> 
            <td><a href="https://twitter.com/{{twitter}}">@{{twitter}}</a></td> 
        </tr> 
        {{/users}} 
    </tbody> 
</table> 
</script>

JAVASCRIPT 代码:

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

var data = { 
    users: [ { 
        person: {
            firstName: "Garry", 
            lastName: "Finch"
        },
        jobTitle: "Front End Technical Lead",
        twitter: "gazraa" 
    }, {
        person: {
            firstName: "Garry", 
            lastName: "Finch"
        }, 
        jobTitle: "Photographer",
        twitter: "photobasics"
    }, {
        person: {
            firstName: "Garry", 
            lastName: "Finch"
        }, 
        jobTitle: "LEGO Geek",
        twitter: "minifigures"
    } ]
}; 

$('body').append(template(data));

【讨论】:

  • 感谢您的建议,但不幸的是代码不起作用。它不会抛出错误,但除了标题之外什么都没有呈现。
  • 您是否使用最新的 Handlebars.js 并包含在 Jquery.js 文件之后?
  • 我是的,两者都是最新的。没有显示把手/jquery 错误。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多