错误笔记:express中handlebars语法注意事项

来源:互联网 发布:netbean php 编辑:程序博客网 时间:2024/06/06 19:36

生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最强壮的地方。——海明威《老人与海》

知道错误在哪,才能解决问题。
解决问题的同时能获得更多的知识。

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({}))等下,所以是没有得到数据,依次可以查看你的是哪里出错了。

0 0