ハンドルバーに三項演算子はありますか? という意味ではありませんif else
。私はのように意味しa == true ? "a" : "b"
ます。
5 に答える
ヘルパーは、if
3 つの引数を渡すことにより、三項演算子として使用できます。
次の例では、ボタンのデフォルト値は です"Save Changes"
が、model.isSaving
が true の場合、値は一時的に に変更されSaving...
ます。
<button>{{if model.isSaving "Saving..." "Save Changes"}}</button>
...代わりに、別のヘルパー内で使用:
{{input type="submit" value=(if model.isSaving "Saving..." "Save Changes")}}
You can build your own helper in handlbars if you really want to. Something like ternary(a==true, "a", "b")
. For more information on that see the documentation. The idea from m90 is not the idea behind handlebars. The idea is to not have explicit code in your templates, only calls to helpers and objects.
これにはヘルパーがあります (他のヘルパーも内部で使用できることに注意してください) 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);
パラメータが 2 つの場合: 最初のパラメータが true と評価された場合は出力され、それ以外の場合は 2 番目のパラメータが出力されます。
{{iftrue project.price 'N/A'}} // $9.99
{{iftrue project.priceNotAvailable 'N/A'}} // N/A
3 つのパラメーターの場合: 最初のパラメーターが true と評価された場合は 2 番目のパラメーターが出力され、それ以外の場合は 3 番目のパラメーターが出力されます。
// If deadline is set formatted date will be printed, otherwise 'N/A'
{{iftrue project.deadline (moment-format project.deadline 'DD.MM.YYYY') 'N/A'}}
これは私のために働く
{{#if final}} "Final" {{^}} "Interim" {{/if}}