Используйте переменную для именования ключей массива внутри класса Ember - PullRequest
0 голосов
/ 26 июня 2018

У меня есть класс компонента Ember, как показано ниже;

import Ember from 'ember';
import myappconstants from '../utils/constants';

export default Ember.Component.extend({
    constants: myappconstants.FIELD_CONSTANTS.SECTION_1,
    myConfigs: {
        [myappconstants.FIELD_CONSTANTS.SECTION_1.FIELD_1] : {fieldName:"my__label__1", type:"text"},
        [myappconstants.FIELD_CONSTANTS.SECTION_1.FIELD_2] : {fieldName:"my__label__2", type:"text"}        
    }
})

Мой вопрос в классе компонентов, я хочу, чтобы ключи "myConfigs" были определены немного по-другому. Это потому, что определение может вырасти примерно до 20 пунктов, и любое изменение имени в будущем должно быть сделано в нескольких местах.

Итак, я хочу, чтобы это было определено как

myConfigs: {
        [this.constants.FIELD_1] : {fieldName:"my__label__1", type:"text"},
        [this.constants.FIELD_2] : {fieldName:"my__label__2", type:"text"}      
    }

С приведенным выше кодом я получаю сообщение об ошибке; Невозможно прочитать свойство 'константы' из неопределенного

Можно ли добиться вышеуказанного наименования?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы можете использовать хук willRender, который вы получите с классом компонента, и использовать .set() для установки свойства myConfigs.

Это будет выглядеть примерно так:

import Ember from 'ember';
import myappconstants from '../utils/constants';

export default Ember.Component.extend({
  willRender() {
    const sec1Constants = myappconstants.FIELD_CONSTANTS.SECTION_1;

    this.set('myConfigs', {
      `${sec1Constants.FIELD_1}`: {fieldName:"my__label__1", type:"text"},
      `${sec1Constants.FIELD_2}`: {fieldName:"my__label__2", type:"text"}    
    });
  }
});

Примечание. Если вы решите использовать .set() для myConfigs, вы захотите использовать Ember Object вместо POJO для заданного объекта.

0 голосов
/ 26 июня 2018

Вы можете использовать вычисляемое свойство , если хотите сделать myConfigs зависимым от constants свойство

...