2013-02-25 47 views
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生成组合的声明类和条件类(无需创建视图)。有没有另一种方法来做到这一点?

回答

11

template guides它描述了一种静态和绑定类一个项目相结合:

如果你需要一个元素具有静态和束缚类的组合,你应该包括在静态类绑定属性列表,以冒号为前缀。

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

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

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

+0

谢谢,不知道我是如何错过的。 – gbabiars 2013-02-25 05:03:45

+0

优秀的方向! :) – 2013-05-03 08:36:27

+0

'bindAttr'别名为'bind-attr'并且自从 [Ember 1.0 RC8](http://emberjs.com/blog/2013/08/29/ember-1-0-rc8。 HTML#toc_other - 改进)。 – sn3p 2015-06-30 12:51:25

5

由于灰烬1.11的你可以使用inline-if-syntax

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