Использование Alpine. js как получить значение select1
или select2
в основной функции form()
?
Я могу это сделать, если не использую x-data
на выборках, но затем вы должны делать забавные вещи с переменной open
, чтобы она была уникальной для каждого выбора (если вы этого не сделаете, то все выборки открываются одновременно).
Примечания:
- Я не , использующий
x-for
для итерации входных данных Select Option, потому что по соображениям производительности я предварительно отрисовываю их в 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
},
};
};