Отрисовка массива из обещания с использованием lit-html до

#es6-promise #lit-html

#es6-обещание #lit-html

Вопрос:

Я пытаюсь отобразить некоторый HTML с использованием lit-html и их синтаксиса until. Должен признаться, обещания меня расстраивают, но по профессии я сторонний разработчик, так что это сводится к недостатку знаний с моей стороны. Любая помощь была бы высоко оценена.

Мой код

 ... removed for brevity ...

    async getCenters() {
        try {
            return await this.centerManager.allCenters;
        }
        catch (error) {
            return error;
        }
    }

    createView() {
        return html`
        <style>
            h2 {
                color: var(--ptsi-gold);
                font-family: 'Helvetica Neue Medium';
                font-size:1.4em;
            }

            p {
                font-family: 'Helvetica Neue Roman';
                font-size:1em;
            }

            .wrapper {
                display: flex;
                flex-wrap: wrap;
                justify-content: space-between;
            }

            .tile {
                background: var(--ptsi-gray);
                padding: 25px;
                margin: 25px 0px 25px 0px;
            }
        </style>
        <div class="wrapper">
            <div class="tile">
                <h2>This is a Hard Typed Title</h2>
                <p>This is a Hard Typed Body.</p>
            </div>
        </div>
        ${until(this.getCenters().then((data) => {
            data.forEach(element => {
                html`<div class="wrapper">
                        <div class="tile">
                            <h2>${element.program_code}</h2>
                            <p>${element.program_name}</p>
                        </div>
                    </div>
                `
            })
        }), html`<span>Loading...</span>`)
            }`
    }
}

... removed for brevity ...
  

Когда страница загружается, я просматриваю массив и могу проверить значения. Кроме того, я вижу загрузку… находясь в отладчике, но html` никогда не отображает содержимое в функции until().

Ответ №1:

Первый аргумент until не преобразуется ни в какой контент. Обновите функции, чтобы возвращать значения и использовать map вместо forEach .

 until(this.getCenters().then((data) => {
  return data.map(element => {
    return html`<div class="wrapper">
      <div class="tile">
        <h2>${element.program_code}</h2>
        <p>${element.program_name}</p>
      </div>
    </div>`
  })
}), html`<span>Loading...</span>`)
  

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

1. Извините за задержку ответа. Это решение отлично сработало; спасибо!