【发布时间】:2019-11-25 19:17:55
【问题描述】:
我在这里有一个数据结构,我分为标题和项目。我正在尝试应用一个自定义排序,我已经为其创建了一个逻辑方法,但我无法弄清楚如何根据名称和等级单独应用该排序方法。这是codepen的链接。
new Vue({
el: '#app',
data() {
return {
headers: [{
text: 'Name',
value: 'Name'
},
{
text: 'Grades',
value: 'grades'
},
],
labels: ['Andy', 'Max', 'John', 'Travis', 'Rick'],
Grades: [99, 72, 66, 84, 91]
}
},
computed: {
tableItems() {
let items = [],
this.labels.forEach((label, i) => {
let item = {}
item.name = label
item.grades = this.Grades[i]
items.push(item)
console.log(items)
})
return items
}
},
methods: {
sortBy(prop) {
this.tableItems.sort((a, b) => a[prop] < b[prop] ? -1 : 1)
}
}
})
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.5.14/dist/vuetify.min.css" rel="stylesheet" />
<div id="app">
<v-app id="inspire">
<v-container>
<v-layout>
<v-flex v-for="(header, i) in headers" :key="header.text" xs4 py-1>
<span>{{ header.text }}
<v-icon small @click="sortBy(this.labels)">arrow_upward</v-icon>
</span>
</v-flex>
<v-layout v-for="item in tableItems" :key="item.name">
<v-flex xs4 py-1>
<span>{{ item.name }}</span>
</v-flex>
<v-flex xs4 py-1>
<span>{{item.grades}}</span>
</v-flex>
</v-layout>
</v-layout>
</v-container>
</v-app>
</div>
现在在保持数据结构和所有内容不变的同时,如何使 v-icon 上的方法分别用于成绩和名称?
【问题讨论】:
标签: javascript arrays vue.js vuetify.js