我正在将Ember 1.5 Handlebars应用程序迁移到当前稳定的Ember和HTMLBars,并且似乎绑定的控制器属性必须返回"disabled"
或null
才能按预期使用“禁用”DOM属性。
<button disabled={{isDisabled}}>
In Handlebars isDisabled
属性是一个布尔值,一切都很好。
在HTMLBars中,我似乎需要:
Ember.Controller.extend({
isDisabled: function() {
if(this.get('itemSelected')){
return null;
} else {
return 'disabled';
}
}.property('itemSelected')
});
这是对的吗?这当然是一个问题,因为布尔属性应该是应用程序其余部分的布尔值,所以为了让它按预期工作,我需要添加一个额外的计算属性来驱动“布尔值 - ish“设置了"string"/null
值的DOM属性。
是否有其他人遇到此问题,或与“已检查”相关的问题?
使用:
Ember 1.11.3 + HTMLBars
ember-cli 0.2.3
答案 0 :(得分:1)
我刚刚碰到了同样的事情,我找到了一个适合我的简短解决方案。
<button disabled={{if itemSelected true null}}>a button<button>
答案 1 :(得分:0)
我通过使用绑定帮助器想出了一个合理的解决方案。
// ../helpers/boolean-disabled.js
import Ember from 'ember';
export function booleanDisabled(params/*, hash*/) {
var disabled = params[0];
if(disabled) {
return 'disabled';
} else {
return null;
}
}
export default Ember.HTMLBars.makeBoundHelper(booleanDisabled);
然后在模板中
<button disabled="{{boolean-disabled itemSelected}}">