Ember + HTMLBars: "boolean" 绑定属性不是布尔值
Ember + HTMLBars: "boolean" bound attributes are not booleans
我正在将一个 Ember 1.5 Handlebars 应用程序迁移到当前稳定的 Ember 和 HTMLBars,似乎绑定控制器 属性 必须 return "disabled"
或 null
以使用 "disabled" DOM 属性按预期工作。
<button disabled={{isDisabled}}>
在 Handlebars 中 isDisabled
属性 是一个布尔值,一切正常。
在 HTMLBars 中我似乎需要:
Ember.Controller.extend({
isDisabled: function() {
if(this.get('itemSelected')){
return null;
} else {
return 'disabled';
}
}.property('itemSelected')
});
这是正确的吗?这当然会带来一个问题,因为布尔值 属性 应该是应用程序其余部分中的布尔值,因此要使其按预期工作,我需要添加一个额外的计算 属性 使用 "string"/null
值集驱动 "boolean-ish" DOM 属性。
有没有其他人遇到过这个问题,或者与 "checked" 相关的问题?
使用:
Ember 1.11.3 + HTMLBars
ember-cli 0.2.3
我通过使用绑定助手想出了一个合理的解决方案。
// ../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}}">
我只是 运行 遇到了同样的事情,我找到了一个更短的解决方案,适合我。
<button disabled={{if itemSelected true null}}>a button<button>
我正在将一个 Ember 1.5 Handlebars 应用程序迁移到当前稳定的 Ember 和 HTMLBars,似乎绑定控制器 属性 必须 return "disabled"
或 null
以使用 "disabled" DOM 属性按预期工作。
<button disabled={{isDisabled}}>
在 Handlebars 中 isDisabled
属性 是一个布尔值,一切正常。
在 HTMLBars 中我似乎需要:
Ember.Controller.extend({
isDisabled: function() {
if(this.get('itemSelected')){
return null;
} else {
return 'disabled';
}
}.property('itemSelected')
});
这是正确的吗?这当然会带来一个问题,因为布尔值 属性 应该是应用程序其余部分中的布尔值,因此要使其按预期工作,我需要添加一个额外的计算 属性 使用 "string"/null
值集驱动 "boolean-ish" DOM 属性。
有没有其他人遇到过这个问题,或者与 "checked" 相关的问题?
使用:
Ember 1.11.3 + HTMLBars
ember-cli 0.2.3
我通过使用绑定助手想出了一个合理的解决方案。
// ../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}}">
我只是 运行 遇到了同样的事情,我找到了一个更短的解决方案,适合我。
<button disabled={{if itemSelected true null}}>a button<button>