如何根据Ember中的某些条件更改输入助手的类

gle*_*986 3 ember.js htmlbars

如何if在输入助手中使用condition子句.

我试过了:

{{input class="{{if errors.name "style-error"}}" }}
Run Code Online (Sandbox Code Playgroud)

它造成了建筑错误.

errors.name这里是从控制器属性.

我认为它是嵌套的双花括号导致语法错误,但不知道如何实现此条件类声明.

dwi*_*ern 13

您可以使用括号嵌套助手:

{{input class=(if errors.name "style-error")}}
Run Code Online (Sandbox Code Playgroud)

您应该使用它而不是xxxBinding="..."语法


您可以使用concat帮助程序有条件地添加多个类:

有条件地添加静态+动态类:

{{input class=(if errors.name (concat "static-class " dynamicClass))}}
Run Code Online (Sandbox Code Playgroud)

有条件地添加两个动态类:

{{input class=(if errors.name (concat dynamicClass1 " " dynamicClass2))}}
Run Code Online (Sandbox Code Playgroud)

如果条件为真,则添加一个类,如果条件为假则添加另一个类:

{{input class=(if errors.name "style-error" "style-success")}}
Run Code Online (Sandbox Code Playgroud)

仅在条件为false时添加类:

{{input class=(unless errors.name "style-success")}}
Run Code Online (Sandbox Code Playgroud)

两个条件:

{{input class=(concat (if errors.name "name-error") " " (if errors.date "date-error"))}}
Run Code Online (Sandbox Code Playgroud)

对于更复杂的布尔算术(例如和/或/不,相等和比较),您可以使用ember-truth-helpers