【发布时间】:2017-05-20 09:54:22
【问题描述】:
我正在尝试使用 Node express 和 Handlebars 作为模板引擎构建一个测验应用程序。
我有以下模板:
<div id="quiz">
<div class="container">
<div class="row" id="quiz-header-row">
<div>
<div id="question-title"></div>
</div>
</div>
<div class="row" id="quiz-choices-row">
<div id="choices"></div>
</div>
<div class="row" id="quiz-footer-row">
<button id="quiz-next-btn" class="btn btn-success">Next</button>
</div>
</div>
</div>
<!-- Template -->
<script id="choices-template" type="text/x-handlebars-template">
<div>\{{choices}}</div>
<div>
{{#each choices}}
<a href="#"">{{this}}</a>
{{/each}}
</div>
</script>
如果我不在花括号前使用反斜杠,车把会显示一个空字符串,因此我不能这样写:
<div>{{choices}}</div>
在车把官网上找到我必须用的:\{{choices}}。
用数据填充模板的javascript:
renderChoices: function() {
var template = Handlebars.compile($('#choices-template').html());
var context = {
// array of quiz item choices
choices: Quiz.questions[Quiz.currentIndex].choices
};
$('#choices').html(template(context));
},
我面临的问题是不显示任何内容的 #each 块。 {{#each choice}} 之前的反斜杠不能像上面的例子那样使用,因为服务器会抛出“服务器内部错误:500”。
这是控制台记录的上下文: console log
下面的小提琴根据需要工作,不需要反斜杠
但我在项目中使用 Node 运行的完全相同的代码不会显示 #each 块内写入的任何内容。
我在服务器(express-handlebars)和客户端都有 Handlebars。考虑到结果,我做错了事。
提前谢谢你。
编辑:通过预编译外部文件中的模板并将它们作为脚本包含在视图中来修复。
【问题讨论】:
标签: javascript node.js templates handlebars.js