如果属性为false或不存在,我想禁用输入字段。为此,您需要对输入助手进行反向绑定,例如(伪代码):
{{ input ... disabled=!isNew}}
在阅读docs之后,我找不到反向布尔结构。
我应该通过使用计算属性*来解决这个问题,还是有更好的方法?
* 类似的东西:
loginFieldDisabled: function() {
return ! this.get('isNew');
}.property('isNew')
答案 0 :(得分:5)
对于那些通过Google搜索提出质疑的人,目前您可以使用Ember Truth helpers来解决此问题:
{{input ... disabled=(not isNew)}}
答案 1 :(得分:2)
我可以想到两种方法。首先,使用条件块:
{{#if isNew}}
{{input}}
{{else}}
{{input disabled}}
{{/if}}
但是它带有一系列问题,因为它会添加和删除DOM中的文本字段。另一种方法是修改Ember.TextField
。这里有一些可行的东西(在JSBin中测试):
Ember.TextField.reopen({
notDisabled: function(key, value) {
if (arguments.length > 1) {
this.set('disabled', !value);
}
return !this.get('disabled');
}.property('disabled')
});
然后,在您的模板中:
{{input notDisabled=isNew}}
第二个可能就是你想要的。您也可以扩展Ember.TextField
而不是修改它。