我正在尝试做这样的事情:
<a href="#/{{unbound goto}}" {{bind-attr class=":menu-entry-text :nowrap active:selected-menu-entry-text"}} {{bind-attr id="active:active-nav:inactive-nav"}} {{bind-attr data-goto="goto"}}>
但只有第一个属性(class
)被设置:id
和data-goto
未定义。是否可以在同一元素中使用bind-attr
设置多个属性?怎么样?
答案 0 :(得分:1)
是的,您可以通过使用多个bind-attr
帮助程序一次绑定多个属性,或者只将所有属性放在一个bind-attr
帮助程序中。但是,您的示例中存在问题,这就是为什么事情没有按预期工作的原因。
您用于class属性的“value if true”表单不能应用于其他类型的属性。必须将所有其他属性绑定到控制器上的动态属性。例如,如果您的控制器看起来像这样:
App.MyController = Ember.ObjectController.extend({
myId: function() {
if (this.get("active") === true) {
"active-nav"
} else {
"inactive-nav"
}
}.property("active")
});
然后你会像这样绑定它:
<a href="#/{{unbound goto}}" {{bind-attr id="myID"}}>
就这个例子而言,如果你有一个HTML元素的动态ID,它可能是一个代码味道。 ID应该唯一地标识单个元素,我不希望它们发生变化。看起来这个类似乎更适合这个用例。