错误:Handlebars.js中缺少帮助程序

Cam*_*ima 8 javascript node.js express handlebars.js

我正在使用带有node和express的handlebars.js模板.我正在使用{{@index}}模板标签创建一个编号列表,但是由于索引从0开始,我想从一开始,我似乎需要使用自定义帮助器.我已经看到很多关于此的帖子,我发现了以下代码:

Handlebars.registerHelper("inc", function(value, options)
{
    return parseInt(value) + 1;
});

{{#each score}}
      <li class="list-group-item">
      <div id="place"> {{inc @index}} &nbsp </div>
      <div class="wordOrName">{{ player_name }}</div>
           <div class="number">{{ score }}</div></li>
        {{/each}}
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到辅助寄存器功能应该去的地方.我已经尝试将它放在模板本身和其他各个地方,但我仍然继续

Error: Missing helper: "inc"
   at model.<anonymous>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想将帮助器放在一个单独的文件helpers.js中,但我对如何让把手识别它没有任何想法.

编辑:

句柄包含在项目中,节点文件index.js中包含以下代码:

// view engine
app.set('views', __dirname + '/views/');
app.set('view engine', 'handlebars');
app.engine('handlebars', engines.handlebars); 
Run Code Online (Sandbox Code Playgroud)

似乎不可能在模板本身中包含辅助函数.

Cam*_*ima 9

我想通了......帮助者确实需要在节点应用程序文件中注册,如下所示:

// view engine
app.set('views', __dirname + '/views/');
app.set('view engine', 'handlebars');
var hbs = require('handlebars');
hbs.registerHelper("inc", function(value, options)
{
    return parseInt(value) + 1;
});
app.engine('handlebars', engines.handlebars);
Run Code Online (Sandbox Code Playgroud)

我希望这些信息更容易获取,但它确实存在.


Pri*_*han 5

注册数学把手并执行所有数学运算。

app.engine('handlebars', exphbs({
  helpers:{
    // Function to do basic mathematical operation in handlebar
    math: function(lvalue, operator, rvalue) {lvalue = parseFloat(lvalue);
        rvalue = parseFloat(rvalue);
        return {
            "+": lvalue + rvalue,
            "-": lvalue - rvalue,
            "*": lvalue * rvalue,
            "/": lvalue / rvalue,
            "%": lvalue % rvalue
        }[operator];
    }
}}));
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)

然后,您可以在视图中直接执行操作。

    {{#each myArray}}
        <span>{{math @index "+" 1}}</span>
    {{/each}}
Run Code Online (Sandbox Code Playgroud)