6

在我看来,我有一个按钮,当模型的数据不脏时我想禁用它。

当我输出:<button {{ action "update" }} {{bindAttr disabled="isDirty"}}>Save</button>数据不脏时启用,数据脏时禁用。

我想扭转这种情况,所以我尝试了这个: <button {{ action "update" }} {{bindAttr disabled="!isDirty"}}>Save</button>但现在根本不检查脏度。如何在 bindAttr 帮助器中反转布尔值?

这是我的代码:

控制器

App.SiteController = Em.ObjectController.extend({
    isNotDirty: function() {
        return !this.get('isDirty');
    }.property('content')
});
App.SiteEditController = Em.ObjectController.extend({
    needs : [ 'site' ]
});

模板

{{#with controllers.site}}
    <div>{{ isDirty }}</div>
    <div>{{ isNotDirty }}</div>
    <div class="control-group">
        <label class="control-label" for="name">Name</label>
        <div class="controls">
            {{view Ember.TextField valueBinding="name"}}
        </div>
    </div>
    <div class="form-actions">
        <button {{bindAttr disabled="isNotDirty"}} class="btn btn-primary">Save</button>
    </div>
{{/with}}

我输出了isDirty一个isNotDirty属性,所以我可以观察它们的变化。但是isDirty当我更改文本字段的值时,只有属性会发生变化,

4

1 回答 1

12

该解决方案可以在Ember的API 文档中找到。有一个所有可用速记计算助手的列表。

我用于Ember.computed.not这种情况:

App.SiteController = Em.ObjectController.extend({
  isNotDirty: Ember.computed.not('isDirty')
});
于 2014-02-14T11:14:27.403 回答