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

标签 javascript jquery node.js handlebars.js

我正在尝试实现 Handlebars 模板逻辑,以在用户经过身份验证时显示“已登录”导航栏(包含用户的名字和个人资料图片),或者在用户未经过身份验证时显示“已注销”导航栏。

为此,我使用 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}} 语句,这意味着用户未经过身份验证。

有没有更好的方法来实现这个逻辑?辅助代码是否错误? Handlebars {{#if}} 表达式是否不正确?

感谢任何帮助。

谢谢!

杰西

最佳答案

phkavitha 想说的是,你可以使用(login_status 函数)作为属性(getter)而不是助手。

你可以说:

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

关于javascript - Handlebars.js 条件语句 {{#if expression}} ... {{else}} ... {{/iif}} 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060915/

相关文章:

node.js - 如何生成 key 对并使用它来签名和验证 Node.js 中的文本?

javascript - 按键时无法从 iframe 失去焦点

javascript - 使用 jquery 淡入淡出

jquery - 如何在 jQuery 中选择表格单元格而不选择嵌套表格单元格

javascript - Jquery 和 Bootstrap 模态

node.js - Nodejs multer 选项不会触发

node.js - 更改 slack 中对话流机器人的机器人用户名

javascript - Angular 过滤器 : re-apply on object property

javascript - 防止 iOS 5.1 上打开键盘的默认操作

javascript - getElementById 获取特定 html 标签