javascript - Handlebars 助手未定义。

标签 javascript node.js handlebars.js handlebarshelper

我有 div 显示 mysql 数据库中的内容。内容太长,所以我决定使用 Handlebar 助手。这是我的 html 代码:

    <div class="row">
    {{#if news}}
        {{#each news}}

            <div class="col-md-4 img-portfolio">
                <a href="/news-details/{{id}}">
                    <img class="img-responsive img-hover small-img" src="/images/news/{{image}}" alt="">
                </a>
                <h3>
                    <a href="/news-details/{{id}}">{{title}}</a>
                </h3>
                <p> {{substr "10" text}} </p>
            </div>
            {{/each}}        
     {{else}}
     <p>No News</p>
{{/if}}

Handlebar Helper 放置在 index.js 文件中,如下所示:

Handlebars.registerHelper('substr', function(length, context, options) {
  if ( context.length > length ) {
       return context.substring(0, length) + "...";
  } else {
      return context;
   }
});

当我运行nodejs服务器时,我收到“Handlebar is not Defined”错误。我安装了express-handlebar包,并在index.js文件中将其声明为

var Handlebar = require('express-handlebars');

但是还是不行。

最佳答案

您需要使用Handlebars作为变量名称,而不是Handlebar

另外,官方express-handlebars帮助程序的文档建议在 exphbs.create 下定义帮助程序。

所以服务器上带有帮助程序的代码应该是这样的:

var exphbs = require("express-handlebars"); // you can use any variable name

var hbs = exphbs.create({
  helpers: {
    substr: function(length, context, options) {
      if (context.length > length) {
        return context.substring(0, length) + "...";
      } else {
        return context;
      }
    }
  }
});

关于javascript - Handlebars 助手未定义。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061892/

相关文章:

javascript - 如何在事件时更改选项卡背景颜色

javascript - 禁用浏览器请求 "store credit Card information"

node.js - 如何在选项中输出grunt目标

node.js - 如何识别 Socket.IO 中身份验证成功(不成功)(通过 socketio-auth)?

javascript - 根据reactjs中的条件设置状态

javascript - 使用 JavaScript 在 div 标签上添加点击事件

Node.js 需要多次或将包作为参数传递?

eclipse - Handlebars js 编辑器。

javascript - handlebar.js 和 handlebar.runtime.js 有什么区别?

ember.js - 是否可以在 ember.js 中为组件设置默认属性?