6

在尝试将条件属性绑定与同一元素上的常规类组合时,我注意到它们存在问题。这是我正在尝试的车把标记:

<a href="#" class="button" {{bindAttr class="isDirty:dirty:clean"}} {{action save}}>Save</a>

我期望生成的是:

<a href="#" class="button clean" data-bindattr-3="3" data-ember-action="4">Save</a>

但实际生成的是:

<a href="#" class="button" data-bindattr-3="3" data-ember-action="4">Save</a>

当我修改模型时,它会正确生成脏类:

<a href="#" class="button dirty" data-bindattr-3="3" data-ember-action="4">Save</a>

如果我尝试在绑定后移动类,它将生成条件类而不是声明的类:

<a href="#" {{bindAttr class="isDirty:dirty:clean"}} class="button" {{action save}}>Save</a>

生成条件而非按钮类:

<a href="#" class="clean" data-bindattr-3="3" data-ember-action="4">Save</a>

我想要的是让它只使用 Handlebars 生成组合的声明类和条件类(无需创建视图)。还有另一种方法可以做到这一点吗?

4

2 回答 2

11

模板指南中,它描述了一种为一个项目组合静态类和绑定类的方法:

如果您需要一个元素具有静态类和绑定类的组合,则应将静态类包含在绑定属性列表中,并以冒号为前缀。

在你的情况下,你会做这样的事情:

<a href="#" {{bindAttr class=":button isDirty:dirty:clean"}} {{action save}}>Save</a>

这是一个工作示例http://jsbin.com/ixupad/82/edit

于 2013-02-25T04:57:04.183 回答
5

从 Ember 1.11 开始,您可以使用inline-if-syntax

<a href="#" class="button {{if isDirty 'dirty' 'clean'}}" {{action save}}>
  Save
</a>
于 2015-09-15T00:18:03.033 回答