生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最强壮的地方。——海明威《老人与海》
知道错误在哪,才能解决问题。
解决问题的同时能获得更多的知识。
-
1.添加“\”进行转义语法
-
错误代码
{{#section "head"}}
<script id ="menubutton" type="text/x-handlebars-template">
{{#each this}}
<li>nihao{{name}}</li>
{{/each}}
</script>
{{/section}}
-
#
- 正确代码
{{#section "head"}}
<script id ="menubutton" type="text/x-handlebars-template">
\{{#each this}}
<li>nihao\{{name}}</li>
\{{/each}}
</script>
{{/section}}
-
#
-
在html中你可以这样写,在express中的handlebars文件中,你必须添加“ \”,我们必须转义至少一个大括号,否则,服务器端视图会尝试对其进行替换。
如果不进行转义的话,在自定义helps时,{{function num}},会导致网页崩溃,输出不出来数据。
-
2. Uncaught Error: You must pass a string or Handlebars AST to Handlebars.compile. You passed undefined
-
错误代码
{{#section "head"}}
<script type="text/javascript">
var context = {num:123456789}
Handlebars.registerHelper('formatnumber',function(num,options){
num = num + '';
return num.replace(/(?=(?!^)(?:\d{3})+(?:\.|$))(\d{3}(\.\d+$)?)/g,',$1');
})
var source = $("#ceshi").html();
var ceshiTemplate = Handlebars.compile(source);
$(".ceshi-wrap").html(ceshiTemplate(context));
</script>
{{/section}}
<div class="ceshi-wrap">这个
<script id="ceshi" type="text/x-handlebars-template">
\{{formatnumber num}}
</script>
</div>
-
#
-
正确代码
{{#section "head"}}
<script type="text/javascript">
var context = {num:123456789}
Handlebars.registerHelper('formatnumber',function(num,options){
num = num + '';
return num.replace(/(?=(?!^)(?:\d{3})+(?:\.|$))(\d{3}(\.\d+$)?)/g,',$1');
})
$(window).load(function(){
var source = $("#ceshi").html();
var ceshiTemplate = Handlebars.compile(source);
$(".ceshi-wrap").html(ceshiTemplate(context));
})
</script>
{{/section}}
<div class="ceshi-wrap">这个
<script id="ceshi" type="text/x-handlebars-template">
\{{formatnumber num}}
</script>
</div>
-
#
-
原因是并没有给Handlebars.compile(传入数据),然而打眼一看传入了啊。这是怎么回事呢,低级错误,是因为是用的$语法,却没有写在$(function({}))等下,所以是没有得到数据,依次可以查看你的是哪里出错了。