Node.js中的把手助手不起作用

时间:2018-07-17 16:52:35

标签: node.js handlebars.js

我需要在我的车把模板中检查if条件,以检查字符串是否相等。我已经在脚本文件中注册了一个车把助手,并在模板中使用了它。以下是我的代码。

Test.js文件

"use strict"

const handlebars = require('handlebars');

const writeSourceFile = (filename, type) =>
    new Promise((resolve,reject) =>
        fs.writeFile(filename, type, function(err) {
            return err ? reject(err) : resolve();
        }));

handlebars.registerHelper('is_status', function(msg, matchMsg, options)
{
    if(msg === matchMsg)
        return true;
    else
        return false;
});

const tpl = handlebars.compile(fs.readFileSync('resources/my.html.hbs').toString('utf-8'));

fs.writeFileSync('/home/malintha/tracks.html', tpl(dm));

console.log("Generated source")

res.end();

..............

my.html.hbs文件

{{#is_status (location this "mylocation")}}yes{{/is_status}}

由于对我来说不明显的错误,我没有得到任何输出。没有此自定义is_status检查,我的模板可以正常工作。

我的助手或模板有什么问题?欣赏您的见识。

1 个答案:

答案 0 :(得分:0)

请尝试返回truefalse,而不是在帮助程序中返回options.fn(this)options.inverse(this)

然后,尝试使用.pb在.hbs文件中调用它

{{#is_status location "mylocation"}}yes{{/is_status}}

Here是在文档中完成此操作的一个示例。 另外,here是一个非常有用的stackoverflow答案,它提供了一种比较灵活的变量比较方式。