У меня есть базовое приложение (так как я начинающий) в Electron + VueJS 2.X, и я ищу функцию сортировки для списка v-for.У меня получилось так, что я могу сортировать, но я бы хотел отсортировать в обратном порядке, если будет применен второй щелчок.Я не уверен, что лучший способ сделать это, и, возможно, мой нынешний путь, по которому я иду, нуждается в доработке.Пожалуйста, дайте мне знать, как мне этого добиться.
Я использовал «selectedCategory» для отслеживания текущей категории и, если она появлялась дважды, запустил бы return this.items.reverse()
, но я не смог заставить ее работать.
Я убрал код, чтобы улучшить читаемость.
export default {
name: 'home-page',
data() {
return {
selectedCategory: null,
items: [{
id: 1,
name: 'Person 1',
leave: 123.45
},
{
id: 2,
name: 'John Smith',
leave: 13.45
},
{
id: 3,
name: 'Bill Smith',
leave: 23.45
},
{
id: 4,
name: 'John Doe',
leave: 133.53
}
]
}
},
methods: {
sortedByName: function() {
function compare(a, b) {
if (a.name < b.name) {
return -1
}
if (a.name > b.name) {
return 1
}
return 0
}
this.selectedCategory = 'name'
return this.items.sort(compare)
},
sortedByNumber: function() {
// Same as above but a.leave and b.leave
},
sortedById: function() {
// Same as above but a.id and b.id
}
}
}
<template>
<a v-on:click="sortedById()">ID</a>
<a v-on:click="sortedByName()">User</a>
<a v-on:click="sortedByNumber()">Leave Owing</a>
<div id="page_list">
<div class="user_row" v-for="item in items">
<div class="user_status">{{ item.id }}</div>
<div class="username">{{ item.name }}</div>
<div class="leave_owing">{{ item.leave }}</div>
</div>
</div>
</template>
Спасибо