让 Ember.TextField 观察数组中 属性 的变化
have Ember.TextField observe a change in a property inside an array
我在视图中有一个对象数组,它应该表示 .hbs
中的动态字段数
所以数组是:
export default Ember.View.extend({
metadata_queries: [{name: '', type: 'Exists',
disableValue: true, queryValue:''}
/*, {...}, {...} */],
});
其余数组元素将动态添加
我在 .hbs
中有一个 Ember.TextField
需要根据 disableValue
禁用(或隐藏 - 以更容易的为准)(通过观察绑定的类型改变Ember.Select
.
代码:
{{#each view.metadata_queries}}
<div class="form-group">
<div class="col-xs-2 col-xl-2">
{{view Ember.Select content=view.metaTypes selection=type}}
</div>
<div class="col-xs-2 col-xl-2">
{{view Ember.TextField classBinding=":tests-query" value=queryValue disabled=disableValue}}
</div>
</div>
{{/each}}
问题是 disableValue
不是 属性 - 所以视图不会更新(我检查过 - 布尔值本身确实发生了变化)
我该怎么做?
做了一个JSFiddle来举例说明:
http://jsfiddle.net/6Evrq/400/
要使 disableValue 成为 属性,它必须包含在 Ember 对象中,就像这样
metadata_queries: [Ember.Object.create({name: '', type: 'Exists',
disableValue: true, queryValue:''})
/*, {...}, {...} */],
嗯...显然我没有正确更新 disableValue
:
正确的做法是:
this.get('metadata_queries').forEach(function(item, index, metaQueries) {
Ember.set(item, "disableValue", item.type === "Exists");
});
我在视图中有一个对象数组,它应该表示 .hbs
中的动态字段数
所以数组是:
export default Ember.View.extend({
metadata_queries: [{name: '', type: 'Exists',
disableValue: true, queryValue:''}
/*, {...}, {...} */],
});
其余数组元素将动态添加
我在 .hbs
中有一个 Ember.TextField
需要根据 disableValue
禁用(或隐藏 - 以更容易的为准)(通过观察绑定的类型改变Ember.Select
.
代码:
{{#each view.metadata_queries}}
<div class="form-group">
<div class="col-xs-2 col-xl-2">
{{view Ember.Select content=view.metaTypes selection=type}}
</div>
<div class="col-xs-2 col-xl-2">
{{view Ember.TextField classBinding=":tests-query" value=queryValue disabled=disableValue}}
</div>
</div>
{{/each}}
问题是 disableValue
不是 属性 - 所以视图不会更新(我检查过 - 布尔值本身确实发生了变化)
我该怎么做?
做了一个JSFiddle来举例说明: http://jsfiddle.net/6Evrq/400/
要使 disableValue 成为 属性,它必须包含在 Ember 对象中,就像这样
metadata_queries: [Ember.Object.create({name: '', type: 'Exists',
disableValue: true, queryValue:''})
/*, {...}, {...} */],
嗯...显然我没有正确更新 disableValue
:
正确的做法是:
this.get('metadata_queries').forEach(function(item, index, metaQueries) {
Ember.set(item, "disableValue", item.type === "Exists");
});