Связывание данных для дочерних компонентов в Emblem.js - PullRequest
0 голосов
/ 05 сентября 2018

Окружающая среда, Ember w / Emblem.js

Работаю над проектом, и я пытаюсь сделать его модульным, чтобы динамически извлекать правильный макет формы (дочерний компонент) в зависимости от того, какой выбор делает пользователь.

У меня проблема в том, что у меня есть дочерний компонент со ссылками на изменяемые объекты в родительском объекте, к которому я пытаюсь получить доступ для чтения и записи.

Я считаю, что мне нужно связать данные, а затем передать действие mut обратно к родителю на основе DDAU. ​​

JS
Parent.js

export default Ember.Component.extend({
store: Ember.inject.service(),
name: null,
infoArray: Ember.computed.map(....),
isVisibleChild1: false;
actions: {
    picker() {
        if(dropdown.value==1)
            this.set('isVisibleChild1', true);
    }
},

Child1.js

needs to contain a variable childInfoArray somewhere

Я обнаружил, что в Интернете можно связать данные из родительских и дочерних форм с помощью hbs

{{Child1 childInfoArray=infoArray}}

но я использую Emblem.js вместо hbs

Emblem.js
Parent.emblem

if isVisibleChild1
    = Child1
    childInfoArray = infoArray

Child1.emblem Я признаю, что infoArray, вероятно, должен быть childInfoArray

select id="newInfo" onchange={action (mut infoArray) value="target.value"}
    each optionsArray as |selectOption|
        option selected={is-equal selectOption.key infoArray} value="#{selectOption.key}" = selectOption.value

Я не уверен, куда именно должен идти childInfoArray в Child1.js, и я не совсем уверен, как связать его с объектом в Child1.emblem

любая помощь будет фантастической!

Интересное примечание, у меня есть несколько полей для ввода текста и указатели даты и времени.

Выбор даты и времени выбирается родительским компонентом при сохранении данных в базе данных, но в полях ввода указывается, что с ними не связан ни один объект.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Я понял, используя = Я могу отправить любой классический руль через Эмблему, решение оказалось намного проще, чем я думал

Child1.js

export default Ember.Component.extend({
    infoArray:null,
}

Parent.emblem

if isVisibleChild1
    = Child1 infoArray=infoArray

Child1.emblem

select id="newInfo" onchange={action (mut infoArray) value="target.value"}

Я могу связать все таким образом

= Child1 infoArray=infoArray property2=property2 myFunction=myFunction
0 голосов
/ 07 сентября 2018

Идея в том, что у вас нет доступа к infoArray в файле Child1.emblem. Вы связываете родителя infoArray на childInfoArray. Итак, 2 варианта.

Или вы меняете имя связующего ключа childInfoArray на infoArray на Parent.emblem:

if isVisibleChild1
    = Child1
    infoArray = infoArray

Или вы используете соответствующий ключ в Child1.emblem:

select id="newInfo" onchange={action (mut childInfoArray) value="target.value"}

Помогает ли это?

...