bindAttr反向布尔
问题描述:
在我看来,我有一个按钮,我想被禁用时,模型的数据是不脏。bindAttr反向布尔
当我输出:<button {{ action "update" }} {{bindAttr disabled="isDirty"}}>Save</button>
当数据是不脏当数据是脏的被启用,和禁用。
我要扭转,所以我尝试这样做:<button {{ action "update" }} {{bindAttr disabled="!isDirty"}}>Save</button>
但现在是不检查dirtyness可言。如何反转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
属性在更改文本字段的值时发生变化,
答
可以在Ember的API-docs中找到解决方案。有一个所有可用的速记助手的列表。
我用Ember.computed.not
这种情况:
App.SiteController = Em.ObjectController.extend({
isNotDirty: Ember.computed.not('isDirty')
});
您可以创建一个计算的属性,即反转。你可以做类似'... isNotDirty:function(){return!this.get('content.isDirty'); } .property('content'),...'在**项目控制器**('ObjectController')中,并绑定到该属性:'' – MilkyWayJoe 2013-03-07 15:38:05
尝试使用.property( 'content.isDirty') 现在应该工作。 – mavilein 2013-03-07 15:53:38
这可行,但是当我删除'