让 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");
    });