把手不承认帮手

时间:2017-04-30 12:33:50

标签: javascript node.js express handlebars.js

我在网上发现了这个帮助器,它检查变量是否等于某个字符串。我试图将这个帮助器添加到我的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}}

1 个答案:

答案 0 :(得分:1)

express-generator使用hbs包,您可以在here中看到:

enter image description 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}}