Handlebars.js条件语句{{#if expression}} ... {{else}} ... {{/ iif}}错误

时间:2015-06-25 21:13:51

标签: javascript jquery node.js handlebars.js

我正在尝试实现Handlebars模板逻辑来显示"登录"如果用户已通过身份验证或已退出"如果用户未经过身份验证,则为navbar。

为此,我使用 handlebars.js 条件语句:

{{#if login_status}}
     *logged in navbar html code*
{{else}}
     *logged out navbar html code*
{{/if}}

我还使用帮助 login_status.js ,如果经过身份验证,则返回 true ,并且 false 未经过身份验证,具体取决于是否存在用户的ID。我的帮助程序代码如下所示:

module.exports = function(l) {
    if (l.data.root.id === undefined) {
        console.log('user is logged out');
        return false;
    } else {
        console.log('user is logged in: ', l.data.root.id);
        return true;
    }
};

但是,这不起作用,它始终返回{{else}}语句,这意味着用户未经过身份验证。

有没有更好的方法来实现这个逻辑?帮助代码不正确吗?把手{{#if}}表达式是否不正确?

感谢任何帮助。

谢谢!

杰西

1 个答案:

答案 0 :(得分:0)

phkavitha试图说你可以使用(login_status函数)作为属性(getter)而不是帮助者。

你可以说:

var template = Handlebars.compile([your handlebars template]);
var html = template({
     ...
     get login_status() {
        return require('login_status.js')(l);
     }, 
     ...
})