把手:无法打印JSON对象

时间:2015-09-09 16:27:25

标签: json handlebars.js

我尝试打印出值为result的密钥category,但没有打印出来。如果我Animal,它会按预期打印出来。

这是我的代码:

Console.log(row.category);

这一定是一个非常愚蠢的基本错误,但我无法用Javascript和Handlebars教程/文档来解决这个问题。

1 个答案:

答案 0 :(得分:0)

您通常不会包含引用对象(row)的变量的名称,只包含对象的内容,例如: {{ category }}

您要么在通过Handlebars.compile编译成函数的字符串中执行此操作,然后在对象上使用,如下所示:



var row = {
    "category" : "Animal"
};
var template = Handlebars.compile("Category: {{ category }}");
document.body.insertAdjacentHTML(
  "beforeend",
  template(row)
);

<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.2/handlebars.min.js"></script>
&#13;
&#13;
&#13;

...或者您使用HTML中的模板元素(因此您可以将标记和代码分开):

&#13;
&#13;
var row = {
  "category": "Animal"
};
var template = Handlebars.compile(document.getElementById("entry-template").innerHTML);
document.body.insertAdjacentHTML(
  "beforeend", template(row)
);
&#13;
<script id="entry-template" type="text/x-handlebars-template">
  Category: {{category}}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.2/handlebars.min.js"></script>
&#13;
&#13;
&#13;

在这两种情况下,您最终都会得到一个字符串,您必须将其放在页面上的某个位置。在上面的示例中,我使用了document.body.insertAdjacentHTML,但更常见的是使用getElementByIdquerySelector查找容器元素或类似内容,然后填写。