【发布时间】:2020-10-29 01:20:37
【问题描述】:
我正在使用 Vue cli,我有一组用户,我想在模板中显示为个人资料卡,我想按名称排序。 我正在使用 Vuex 来存储数据。
在我的模板中的子组件中:
<div class="outside" v-for="(item, index) in arrays" :key="item.id" v-bind:id="item.name">
<div class="stay"> <p class="n"> {{ item.name }}</p> </div>
我正在获取 Vuex 数据:
computed: {
arrays () {
return this.$store.state.arrays
},
}
我的数组包含:
arrays: [
{ name: 'Peter'},
{ name: 'Beth'},
{ name: 'Daniel'},
]
我在子组件中使用了一个函数:
computed:{
sortedArray: function() {
function compare(a, b) {
if (a.name < b.name)
return -1;
if (a.name > b.name)
return 1;
return 0;
}
return this.arrays.sort(compare);
}
},
并将模板更改为:
<div class="outside" v-for="(item, index) in sortedArrays" :key="item.id" v-bind:id="item.name">
但我想要一种方法来执行此操作(在父级中),而不是始终按顺序显示。
在我的父组件中:
<div class="begin">
<div class="b">Sort By:
<select name="sort" class="sort" >
<option value="name" @click="sortArrays()">Name</option>
</select>
</div>
<childComponent></childComponent>
</div>
我想要一个 sortArrays 函数,当我单击按名称排序时,我可以在父级中使用该函数以按字母顺序显示用户个人资料卡。
非常感谢!
【问题讨论】:
标签: sorting vue.js onclick vue-component vuex