如何使用 Handlebars 三元助手?
How to use Handlebars ternary helper?
在 this answer 之后,我写了一个像
这样的助手
module.exports.register = function (Handlebars) {
Handlebars.registerHelper('ternary', function(test, yes, no) {
return test ? yes : no;
});
};
我确定助手已加载并正在定义,但无法弄清楚使用它的语法。我试着像
一样使用它
<div>{{ternary(true, 'yes', 'no')}}</div>
但这会导致 assemble 构建错误
Warning: Parse error on line 10:
...<div>{{ternary(true, 'yes',
----------^
Expecting 'ID', 'DATA', got 'INVALID' Use --force to continue.
使用这样的助手的正确语法是什么?
Handlebars 助手:http://handlebarsjs.com/#helpers 不遵循模板中的 JavaScript 语法。您可以像这样使用它们:
<div>{{ternary true "yes" "no"}}</div>
2017 年 7 月 14 日更新
由于两个字符串在 JavaScript 中都被视为真值,我已将代码更改为以下内容:
{{input value=email placeholder="Enter Email" class="form-control"
disabled=(if isResetting 1 0)
}}
==============================
原答案
如果 {{if}}
尝试使用内联怎么样?
{{if user.isAdmin "True" "False" }}
根据文档,这对我有用:https://handlebarsjs.com/guide/builtin-helpers.html#if
{{#each langs }}
<a class="navbar-item {{#if active}}is-active{{else}}{{/if}}" href="#{{code}}">
{{label}}
</a>
{{/each}}
在我看来,handlebars 的能力不足以做到这一点?我试过了(经过多次不同的尝试);
<li class="{{#if meta.name === 'dashboard'}} active {{else}} undefined">
不工作:s
看起来你不能用字符串来做。也许只有布尔值。
在 this answer 之后,我写了一个像
这样的助手module.exports.register = function (Handlebars) {
Handlebars.registerHelper('ternary', function(test, yes, no) {
return test ? yes : no;
});
};
我确定助手已加载并正在定义,但无法弄清楚使用它的语法。我试着像
一样使用它<div>{{ternary(true, 'yes', 'no')}}</div>
但这会导致 assemble 构建错误
Warning: Parse error on line 10:
...<div>{{ternary(true, 'yes',
----------^
Expecting 'ID', 'DATA', got 'INVALID' Use --force to continue.
使用这样的助手的正确语法是什么?
Handlebars 助手:http://handlebarsjs.com/#helpers 不遵循模板中的 JavaScript 语法。您可以像这样使用它们:
<div>{{ternary true "yes" "no"}}</div>
2017 年 7 月 14 日更新
由于两个字符串在 JavaScript 中都被视为真值,我已将代码更改为以下内容:
{{input value=email placeholder="Enter Email" class="form-control"
disabled=(if isResetting 1 0)
}}
==============================
原答案
如果 {{if}}
尝试使用内联怎么样?
{{if user.isAdmin "True" "False" }}
根据文档,这对我有用:https://handlebarsjs.com/guide/builtin-helpers.html#if
{{#each langs }}
<a class="navbar-item {{#if active}}is-active{{else}}{{/if}}" href="#{{code}}">
{{label}}
</a>
{{/each}}
在我看来,handlebars 的能力不足以做到这一点?我试过了(经过多次不同的尝试);
<li class="{{#if meta.name === 'dashboard'}} active {{else}} undefined">
不工作:s
看起来你不能用字符串来做。也许只有布尔值。