我尝试打印出值为result
的密钥category
,但没有打印出来。如果我Animal
,它会按预期打印出来。
这是我的代码:
Console.log(row.category);
这一定是一个非常愚蠢的基本错误,但我无法用Javascript和Handlebars教程/文档来解决这个问题。
答案 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;
...或者您使用HTML中的模板元素(因此您可以将标记和代码分开):
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;
在这两种情况下,您最终都会得到一个字符串,您必须将其放在页面上的某个位置。在上面的示例中,我使用了document.body.insertAdjacentHTML
,但更常见的是使用getElementById
或querySelector
查找容器元素或类似内容,然后填写。