遍历 json 个对象的数组

Looping through an array of json objects

所以,我有这个网络应用程序,我在其中使用 hbs 作为模板引擎。现在,我在休息 API 时发送了一组 JSON 个对象:

 [{";_id":"5704630a7d4cd367f8dsdce7","name":"Seagate","description":"This awesome Hard disk" ,"categories":["SDD","256GB"]}]

我有一个变量:disklist,它有这个数据。

使用车把这是我目前尝试过的方法,但似乎不起作用。

  console.log(disklist[0].name); // LOGS THE NAME PROPERLY

  var source   = $("#dlist").html();
  var template = Handlebars.compile(source);
  var wrapper  = {objects: disklist};

在html中:

<script type='text/template' id='dlist'>
  <li>
   {{#each objects}}
        <h1>{{name}}</h1>
   {{/each}}
  </li>
</script>

但是没有打印出来!

我该如何解决这个问题?

此外,如果有一种方法可以只用简单的系统来做到这一点 JavaScript,请分享!

您使用的模板类型有误。应该是text/x-handlebars-template。我不是 100% 确定这很重要,但你应该与 Handlebars' own documentation.

保持一致

此外,我没有看到实际 呈现 HTML 的行。要使用 Handlebars,您需要两样东西:一个已编译的模板和一个 "context"。定义上下文后(这里我假设它是 wrapper 变量,可能应该命名为 "context"),你需要像这样执行模板:

var renderedHTML = template(wrapper); // pass your compiled template the context
document.getElementById("container").appendChild(renderedHTML);
// you might have to use innerHTML = renderedHTML instead
// I forget if renderedHTML will be a string or DOM node
// For jQuery just use $("#container").append(renderedHTML);

您的已编译模板采用您提供的上下文并将其用作插入自身的数据,returns 结果以便您可以将其插入到您的页面中。

普通 js:

var disklist = [
    {";_id":"5704630a7d4cd367f8dsdce7","name":"Seagate","description":"This awesome Hard disk" ,"categories":["SDD","256GB"]},
    {";_id":"5704630a7d4cd367f8dsdce7","name":"Seagate2","description":"This awesome Hard disk" ,"categories":["SDD","256GB"]},
    {";_id":"5704630a7d4cd367f8dsdce7","name":"Seagate3","description":"This awesome Hard disk" ,"categories":["SDD","256GB"]}
];


document.getElementById('container').innerHTML = disklist.map(function(disk) {
  return '<li><h1>' + disk.name + '</h1></li>';
}).join('');
<ul id="container">
</ul>

不确定这是否是您想要的?

WALKTHROUGH:我们创建一个元素并将其作为我们要渲染到的内容的容器。接下来我们将它的 innerHTML 设置为我们要创建的字符串。 disklist.map 遍历 disklist 数组并为每个项目应用一个字符串,在本例中为 <li><h1>{{disk.name}}</h1></li>。您可以将内容更改为您喜欢的任何内容,它只是HTML。然后,我们使用 .join('') 将字符串数组连接成一个大字符串。最后,我们将 innerHTML 设置为我们刚刚创建的字符串 dala.