У меня есть массив объектов в представлении, которое должно представлять динамическое количество полей в .hbs Итак, массив:

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

Остальные элементы массива будут добавляться динамически

У меня есть Ember.TextField в .hbs, который нужно отключить (или скрыть - в зависимости от того, что проще) в соответствии с disableValue (который изменяется, наблюдая за типом, который привязан к {{X3 }}.

Код:

   {{#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
Boaz 6 Фев 2015 в 13:45

2 ответа

Лучший ответ

Ну ... пока что я неправильно обновил disableValue:

Правильный способ сделать это:

this.get('metadata_queries').forEach(function(item, index, metaQueries) {
      Ember.set(item, "disableValue", item.type === "Exists");
    });
2
Boaz 10 Фев 2015 в 09:23

Чтобы сделать disableValue свойством, оно должно быть заключено в объект Ember, например

metadata_queries: [Ember.Object.create({name: '', type: 'Exists',
                    disableValue: true, queryValue:''})
                    /*, {...}, {...} */],
1
duizendnegen 6 Фев 2015 в 10:50