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}}

プロパティを出力してisDirtyisNotDirty変化を確認できるようにしました。ただし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 に答える