21

在 Handlebars 中,是否有三元运算符?我不是这个意思if else;我的意思是像a == true ? "a" : "b"

4

5 回答 5

21

通过if向它传递三个参数,助手可以用作三元运算符。

在以下示例中,按钮的默认值为"Save Changes",但当model.isSaving为 true 时,该值会临时更改为Saving...

<button>{{if model.isSaving "Saving..." "Save Changes"}}</button>

...或者,在另一个助手中使用:

{{input type="submit" value=(if model.isSaving "Saving..." "Save Changes")}}
于 2015-08-21T18:49:53.260 回答
10

如果你真的想的话,你可以在handlbars中建立你自己的助手。类似的东西ternary(a==true, "a", "b")。有关这方面的更多信息,请参阅文档。m90 的想法不是车把背后的想法。这个想法是在你的模板中没有明确的代码,只调用助手和对象。

于 2012-08-11T16:07:38.803 回答
1

我有一个帮手(注意里面也可以使用其他帮手) https://gist.github.com/terion-name/d87ed8907f1bb2e25f32

// app/helpers/iftrue.js
import Ember from 'ember';

export function iftrue(params) {
  if (params[0]) {
    return params.length === 2 ? params[0] : params[1];
  }
  if (params.length === 2) {
    return params[1];
  } else if (params.length === 3) {
    return params[2];
  }
  return null;
}

export default Ember.Helper.helper(iftrue);

有两个参数:如果第一个参数的计算结果为 true,它将被打印,否则第二个

{{iftrue project.price 'N/A'}} // $9.99
{{iftrue project.priceNotAvailable 'N/A'}} // N/A

使用三个参数:如果第一个参数计算结果为真,则打印第二个,否则打印第三个

// If deadline is set formatted date will be printed, otherwise 'N/A'
{{iftrue project.deadline (moment-format project.deadline 'DD.MM.YYYY') 'N/A'}} 
于 2015-12-30T18:53:17.733 回答
1

下面的代码可用于三元或任何类型的表达式 eval。

警告:请在可以安全使用 eval 的场景中使用此代码。

{{#if (myfunc "(a[0] + 1) % 2 === 0" arg1)}}

{{/if}}

{{#if (myfunc "(a[0] + a[1]) % 2 === 0" arg1 arg2)}}

{{/if}}

车把辅助功能

myfunc: (exp, ...a) => {
    return eval(exp);
  } 
于 2017-11-20T11:27:35.987 回答
1

这对我有用

{{#if final}} "Final" {{^}} "Interim" {{/if}}
于 2021-04-23T16:43:27.667 回答