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}}   </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)
似乎不可能在模板本身中包含辅助函数.
我想通了......帮助者确实需要在节点应用程序文件中注册,如下所示:
// 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)
我希望这些信息更容易获取,但它确实存在.
注册数学把手并执行所有数学运算。
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)
| 归档时间: |
|
| 查看次数: |
20146 次 |
| 最近记录: |