#javascript #vue.js
#javascript #vue.js
Вопрос:
У меня есть выбор с двумя вариантами. Могу ли я использовать один метод для выбора?
Это мой выбор:
<select :value="selected" @change="sortAZ">
<option disabled value="">Ordina per</option>
<option>A-Z</option>
<option>Z-A</option>
</select>
Но с этим выбором я могу использовать только sortAZ
метод для каждого выбора.
Итак, у меня есть два метода: sortAZ
и sortZA
я хотел бы использовать метод для первого варианта и метод для второго.
Ответ №1:
Вы можете просто сохранить текущее выбранное значение и решить, какой метод вызывать в обработчике onchange.
<select :v-model="selected" @change="sort" ">
<option disabled value="">Ordina per</option>
<option>A-Z </option>
<option>Z-A</option>
</select>
methods:{
sort(){
if(selected == 'A-Z'){
callSortAZ();
}
else if(selected == 'Z-A'){
callSortZA();
}
}
}
Надеюсь, это поможет.
Ответ №2:
Используя v-model
, вы можете обновить значение локальной переменной selected
, затем прочитать значение selected
изнутри метода и выполнить сортировку AtoZ или ZtoA.
<template>
<select v-model="selected" @change="handleSort" ">
<option disabled value="">Ordina per</option>
<option value="az">A-Z </option>
<option value="za">Z-A</option>
</select>
</template>
<script>
new Vue({
el: '...',
data: {
selected: ''
},
methods: {
handleSort() {
const selectedVal = this.selected;
if (selectedVal === 'az') {
// sort a to z, call other method
...
} else if (selectedVal === 'za') {
// sort z to a, call other method
...
} else {
...
}
}
}
})
</script>
Ответ №3:
Используйте v-model
директиву для привязки выбранного значения параметра. Затем проверьте, какое значение выбрано в методе изменения.
new Vue({
el: '#app',
data: {selected:''},
methods: {
sorter: function() {
if (this.selected === 'A-Z') {
// the logic for A-Z sorting...
console.log('A-Z option selected')
} else if (this.selected === 'Z-A') {
// the logic for Z-A sorting...
console.log('Z-A option selected')
}
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<select v-model="selected" @change="sorter" >
<option disabled value="">Ordina per</option>
<option value='A-Z'>A-Z</option>
<option value='Z-A'>Z-A</option>
</select>
</div>