【发布时间】:2021-04-23 12:17:40
【问题描述】:
我正在尝试了解为什么此排序功能不起作用。
理论上,它的工作原理应该是这样的:https://codepen.io/levit/pen/abmXgBR
我有一个从 API 获取的列表:
<BookCard v-for='book in filteredBooks' :key='book.id' :book='book' />
我有一个用于搜索的过滤器,但我的排序不是。这是我的计算属性/方法的数据:
data() {
return {
books: [],
order: 1, // Ascending
search: '',
};
},
computed: {
filteredBooks() {
return this.filterBySearch((this.sortByRating(this.books)));
},
},
methods: {
filterBySearch(books) {
return books.filter((book) => book.volumeInfo.title
.toLowerCase().match(this.search.toLowerCase()));
},
sortByRating(books) {
return books
.sort((r1, r2) => (r2.volumeInfo.averageRating - r1.volumeInfo.averageRating)
* this.order);
},
sort() {
this.order *= -1;
},
},
最后,我有一个切换顺序的按钮:
<button v-bind:class="order === 1 ? 'descending' : 'ascending'" @click="sort">
Reader Rating
</button>
由于我是 Vue 新手,因此任何对我可能出错的地方的洞察都会非常有帮助。
谢谢。
【问题讨论】:
标签: javascript vue.js sorting vuejs2