【发布时间】:2022-06-13 12:18:09
【问题描述】:
我有一个范围滑块输入,它应该触发一个异步计算属性来显示。在等待响应时,我想显示一个微调器。请看下面我想出的。我觉得我把事情复杂化了,有时微调器和生成的标题会同时显示(!)。有没有更好的方法来使用 Alpinejs 进行异步计算道具?
<script src="//unpkg.com/alpinejs" defer></script>
<script>
async function getTitle(id) {
const response = await fetch(`https://jsonplaceholder.typicode.com/todos/${id}`)
const data = await response.json();
await new Promise(resolve => setTimeout(resolve, 2500)) // adds some extra slowness
return data.title.toUpperCase()
}
</script>
<div x-data="{ todoId: 10, title: 'A PRELODED TODO TITLE' }">
<h3>Title formatter</h3>
<p>Grab a todo via API and uppercases title </p>
<input x-model="todoId" x-on:change="console.log('change!'); title = null" id="steps-range" type="range" min="0" max="50" step="1">
<div x-show="title !== null" x-html="title ?? (title = (await getTitle(todoId)))"></div>
<div x-show="title === null">Loading ...</div>
</div>
【问题讨论】:
标签: javascript alpinejs