#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. Извините за задержку ответа. Это решение отлично сработало; спасибо!