让Ember.TextField观察数组内属性的变化

时间:2015-02-06 10:45:10

标签: ember.js textfield

我在视图中有一个对象数组,它应该表示.hbs中的动态字段数 所以数组是:

export default Ember.View.extend({
  metadata_queries: [{name: '', type: 'Exists',
                     disableValue: true, queryValue:''}
                     /*, {...}, {...} */],
});

其余数组元素将动态添加

Ember.TextField.hbs根据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/

2 个答案:

答案 0 :(得分:2)

嗯......我没有正确地更新disableValue

正确的方法是:

this.get('metadata_queries').forEach(function(item, index, metaQueries) {
      Ember.set(item, "disableValue", item.type === "Exists");
    });

答案 1 :(得分:1)

要使disableValue属性,它必须包装在Ember对象中,如此

metadata_queries: [Ember.Object.create({name: '', type: 'Exists',
                    disableValue: true, queryValue:''})
                    /*, {...}, {...} */],