2015-10-21 3 views
1

Итак, у меня есть API, который генерирует формы из базы данных. API для полей возвращается:Динамическая настройка клавиши выбора в Ember в поле выбора

{ 
    "formFields": [ 
    { 
     "module": 1, 
     "fieldName": "Global Title", 
     "fieldPosition": "1", 
     "fieldType": "select", 
     "fieldEditable": true, 
     "dataTable": "message", 
     "dataKey": "calling_gt", 
     "dataValue": "id", 
     "id": 1, 
     "createdAt": "2015-10-15T13:59:30.764Z", 
     "updatedAt": "2015-10-15T13:59:30.764Z" 
    } 
    ] 
} 

У меня есть несколько компонентов Ember. По сути, это компонент Add Parameter, который пересекает поля, связанные с компонентом. Ниже загрузки выберите компонент, проходящий в модели из таблицы базы данных и поля использовать для Key->Value:

{{#each model.fields as |field|}} 

     {{#if (eq field.fieldType "select")}} 
      {{form/select-field model=field.dataTable label=field.fieldName key=field.dataKey value=field.dataValue selected=1}} 
     {{/if}} 

    {{/each}} 

select-field компонент генерирует отборный, который производит модель данные из значений, представленных в Add Параметр компонента, например, так:

<div class="form-group"> 
    <label for="{{key}}">{{label}}</label> 
    {{#x-select value=optionValue action="selectOption" class="form-control" id=key}} 
    {{#each componentModel as |option|}} 
     {{#x-option value=option.calling_gt}}{{option.calling_gt}}{{/x-option}} 
    {{/each}} 
    {{/x-select}} 
</div> 

Но как вы можете видеть, в x-option, я в настоящее время жесткого кодирования значения, где они должны быть с помощью key=field.dataKey. Но по мере того как я зацикливаюсь, и мой componentModel -> Options не держит эту переменную, я не уверен, как передать ее в значение x-option.

Моего component.js для select-field выглядит так, если это помогает:

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    componentModel: function() { 
    return this.store.findAll(this.get('model')); 
    }.property(), 

    actions: { 
    selectOption(value, component) { 
     Ember.Logger.debug("Option " + component + " with value " + value + "  selected"); 
     this.set('optionValue', value); 
    } 
    }, 
}); 

Кто-нибудь знает, как вывести данные, используя ключ и значение, передаваемый в select-field компонент?

ответ