Handlebarsjs 如何检查字符串是否等于某个值

81

在Handlebars中,是否可以检查一个字符串是否等于另一个值而不注册帮助器?我似乎在Handlebars参考文档中找不到任何相关的信息。

例如:

{{#if sampleString == "This is a string"}}
...do something
{{/if}}
15个回答

0

在 server.js 中添加 Node.js

const isEqual = function(a, b, opts) {
  if (a == b) {
    return opts.fn(this) 
  } else { 
    return opts.inverse(this) 
  } 
}

var hbs = require('hbs');
hbs.registerHelper('if_eq', isEqual);

0

我和 OP 一样遇到了同样的困难,决定将调用委托给 Javascript,而不是试图强制 Handlebars 屈服于我的意愿...

Javascript 函数(在全局范围内) -

function jsIfElse(compare1, compare2, trueResponse, falseResponse) {
  document.write((compare1 == compare2) ? trueResponse : falseResponse);
}

Handlebars片段 -
<select multiple id="batter_player_team">
  {{#each teamNamesForFilter}}
  <option value="{{this.id}}">                     <script>jsIfElse('{{this.is_active}}','Y','{{this.name}} *', '{{this.name}}');</script>
  </option>
   {{/each}} 
</select>

-1
Handlebars有一个条件运算符叫做“equal”,它接受两个参数:
1.变量
2.你要检查变量是否包含的内容。
例如,要检查“status”是否包含“全职”:
{{#equal status "Full Time"}}  //status is the variable and Full Time is the value your checking for.
    code to be executed
{{else}}
    code to be executed
{{/equal}}

3
使用最新的Handlebars,我得到了以下结果:"缺少helper: "equal",名称:"Error",..." - madprops
2
和madprops一样的问题...如果它能工作,这将是一个不可思议的解决方案。 - DirtyBirdNJ
2
这是个谎言!它要么在 Handlebars 的某个后续版本中被移除了,要么回答的人已经在他们的项目中安装了一个名为“equal”的自定义 helper,并且他们没有意识到。 - Daniel Tonon
我点了踩,因为根据评论所述,它对我和其他人都不起作用。 - Yaron
{{eq}}可用,https://github.com/helpers/handlebars-helpers#eq 我猜可能他们重命名了该函数? - Peter Wong
显示剩余2条评论

-2
Mandrill邮件服务支持Handlebars,可以在#if块中使用“backticks”来评估逻辑表达式:
{{#if `operating_system == "OS X"`}}
  <p>Click here for instructions to install on a Mac</p>
{{elseif `operating_system == "Windows"`}}
  <p>Click here for instructions to install on a PC</p>
{{/if}}

我不确定这在一般情况下是否可行,但你应该试一试。对我来说它很好用。


这似乎在一般情况下不起作用。Handlebars 在反引号上出现错误。哦,好吧。 - trysis
知道这点很好。就我个人而言,我只在Mandrill上尝试过它,那里它运行良好。 - pberggreen

-2
尝试:

{{#is item.status "complete"}} ... {{/is}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接