我正在尝试实现 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/