【发布时间】:2020-08-09 14:14:45
【问题描述】:
使用 Alpine.js 如何在 form() 主函数中获取 select1 或 select2 的值?
如果我不在 Selects 上使用 x-data,我可以做到这一点,但是你必须使用 open 变量做一些时髦的事情,所以它对于每个 Select 都是唯一的(如果你不这样做,那么所有选择立即打开)。
注意事项:
- 我不使用
x-for来迭代选择选项输入,因为出于性能原因,我在 HTML 中预渲染这些输入。它们有图标,其中有 250 多个。 -
@click="$dispatch('input', 'option1Key')"技术是否是设置所选选项值的最佳方法,因为不使用实际的选择输入和 x-for?
<div x-data="form()">
<!-- snip other fields like regular inputs -->
<label for="select-1">Select 1</label>
<div x-data="{ select1: '', open: false }">
<div>Selected: <span x-text="select1"></span></div>
<button @click="open=true">Select ...</button>
<ul x-show="open" @click.away="open=false" x-model="select1" style="display: none;">
<li @click="$dispatch('input', 'option1Key')"><i class="icon"></i> Option1</li>
<li @click="$dispatch('input', 'option2Key')"><i class="icon"></i> Option2</li>
</ul>
</div>
<label for="select-2">Select 2</label>
<div x-data="{ select2: '', open: false }">
<div>Selected: <span x-text="select2"></span></div>
<button @click="open=true">Select ...</button>
<ul x-show="open" @click.away="open=false" x-model="select2" style="display: none;">
<li @click="$dispatch('input', 'option1Key')"><i class="icon"></i> Option1</li>
<li @click="$dispatch('input', 'option2Key')"><i class="icon"></i> Option2</li>
</ul>
</div>
<button class="search" type="submit" :disabled="loading" @click="search()">Search</button>
</div>
<script>
function form() {
return {
select1: '',
select2: '',
search() {
console.log(select1); // undefined
console.log(select2); // undefined
},
};
};
【问题讨论】:
标签: javascript html forms alpine.js