我在网上发现了这个帮助器,它检查变量是否等于某个字符串。我试图将这个帮助器添加到我的index.hbs文件中,但是我收到以下错误:缺少帮助程序:“if_eq”
有人可以告诉我如何解决这个问题吗?我在官方的Handlebars文档中做了他们要求我做的事情,所以我不明白。我使用NodeJS / Express,但没有require('handlebars')
或require('express-handlebars')
,因为这就是express-generator为我生成它的方式。
index.hbs:
<script>
Handlebars.registerHelper('if_eq', function(a, b, opts) {
if(a == b)
return opts.fn(this);
else
return opts.inverse(this);
});
</script>
{{#each tasks}}
{{#if_eq status 'unfinished'}}
[do something]
{{else}}
[do something else]
{{/if_eq}}
{{/each}}
答案 0 :(得分:1)
express-generator使用hbs包,您可以在here中看到:
所以你需要首先在服务器端注册帮助器,如下所示:
const hbs = require('hbs');
const express = require('express');
const app = express();
app.set('view engine', 'hbs');
hbs.registerHelper('if_eq', function(a, b, opts) {
if(a == b)
return opts.fn(this);
else
return opts.inverse(this);
});
//... rest of your server code
从index.hbs
删除助手,因为那是在客户端注册助手,而你在服务器端渲染把手。
<强> index.hbs 强>
{{#each tasks}}
{{#if_eq status 'unfinished'}}
[do something]
{{else}}
[do something else]
{{/if_eq}}
{{/each}}