输入辅助器ember反向禁用状态

时间:2014-06-11 10:18:42

标签: ember.js

如果属性为false或不存在,我想禁用输入字段。为此,您需要对输入助手进行反向绑定,例如(伪代码):

{{ input ... disabled=!isNew}}

在阅读docs之后,我找不到反向布尔结构。

我应该通过使用计算属性*来解决这个问题,还是有更好的方法?


* 类似的东西:

loginFieldDisabled: function() {
    return ! this.get('isNew');
}.property('isNew')

2 个答案:

答案 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而不是修改它。