Handlebars.js条件语句{{#if表达式}}..{{else}}..{{/if}}错误

Handlebars.js Conditional Statement {{#if expression}} ... {{else}} ... {{/iif}} Error

本文关键字:else if 错误 #if js 条件 语句 Handlebars 表达式      更新时间:2023-09-26

我正在尝试实现Handlebars模板逻辑,以便在用户通过身份验证时显示"已登录"的导航栏(带有用户的名字和配置文件图像),在用户未通过身份验证的情况下显示"已注销"的导航条。

要做到这一点,我使用handlebars.js条件语句:

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

我还使用了一个助手login_status.js,该助手根据用户ID的存在,在经过身份验证的情况下返回true并且false未经过身份验证。我的助手代码如下所示:

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}}表达式是否不正确?

感谢您的帮助。

谢谢!

Jesse

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

你可以说:

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