Как получить значения отслеживаемых полей списка JS?

#javascript #html #salesforce #lwc

#javascript #HTML #salesforce #lwc

Вопрос:

У меня возникли проблемы с получением значений отслеживаемого списка JS с полями «Name» и «Content». Если я создаю отдельные списки для каждого поля, это работает нормально. Но я не хочу использовать несколько для: each в моем HTML. Когда я пробую первый метод, он не захватывает шаг.Имя, которое хранится в списке. Однако при втором методе это происходит.

JS:

 @track stepList = [];

addStep(){
    const fields = {};
    fields['Name'] = 'testName';
    fields['Content'] = 'testContent';
    const newInput = {fields};
    this.stepList.push(newInput);
}
  

HTML:

 <lightning-accordion allow-multiple-secions-open onsectiontoggle={handleToggleSection}>
    <template if:true={stepList}>
        <template for:each={stepList} for:item={step}>
            <lightning-accordion-section key={step.Name} label={step.Name}>
                {step.Content}
            </lightning-accordion-section>
        </template>
    </template> 
</lightning-accordion>
  

Как я уже сказал, это отлично работает, если я делаю следующее:

 @track stepNames = [];
@track stepContents = [];

addStep(){
    this.stepNames.push('testName');
    this.stepContents.push('testContent');
}
  

И:

 <lightning-accordion allow-multiple-secions-open onsectiontoggle={handleToggleSection}>
    <template if:true={stepNames}>
        <template for:each={stepNames} for:item={name}>
            <lightning-accordion-section key={name} label={name}>
                I don't want to do an additional for:each for Content.
            </lightning-accordion-section>
        </template>
    </template> 
</lightning-accordion>
  

Комментарии:

1. Можете ли вы опубликовать полученные результаты или какие-либо ошибки?

2. Первый отображает ‘testName’ и ‘testContent’, в то время как второй ничего не отображает.

Ответ №1:

Мне сказали исправить следующим образом:

 @track stepList = [];

addStep(){
    let step = { 'Name': 'testName', 'Content': 'testContent'};
    this.stepList.push(step);
}