Ответ 1
У вас есть несколько способов сделать это.
Редактировать: Улучшено 2)
Можно использовать v-модель, как в 2), но вместо использования значения непосредственно в вашем фильтре orderBy, вы можете использовать вычисляемые свойства
computed: {
sortKey: {
get: function() {
return this.sorting.split(' ')[0]; // return the key part
}
},
sortOrder: {
get: function() {
return this.sorting.split(' ')[1]; // return the order part
}
}
}
Таким образом, sortKey и sortOrder будут доступны как обычное свойство в вашем фильтре:
v-repeat="items | orderBy sortKey sortOrder"
1) Используйте событие JavaScript:
Если вы не укажете какой-либо параметр, собственный объект события будет передан автоматически
<select class="sort-filter" v-on:change="sortBy">
Затем вы можете использовать его так:
methods: {
sortBy: function(e) {
console.log(e.target.value);
},
}
2) Использование v-модели
Вы можете добавить директиву v-модели
<select name="test" v-model="sorting" v-on:change="sortBy">
Таким образом, значение sorting
будет обновляться при каждом изменении.
Вы можете добавить это значение в объект данных вашего ViewModel, чтобы быть более понятным:
data: {
sorting: null // Will be updated when the select value change
}
Затем вы можете получить доступ к значению, как в вашем методе:
methods: {
sortBy: function() {
console.log(this.sorting);
},
}
Если вам просто нужно обновить значение sortKey
, этот метод даже не нужен.
3) Другой странный путь
Очевидно, вы можете использовать значение вашей модели в качестве параметра.
<select name="test" v-model="sortKey" v-on:change="sortBy(sortKey)">
Это работает, но я не вижу смысла.
methods: {
sortBy: function(sortKey) {
console.log(sortKey);
},
}