Vuetify V-Chip 按字母顺序排序?
Vuetify V-Chip Alphabetical Sort?
嘿,我正在尝试按字母顺序对多个 V 芯片进行排序。
伙计们有什么想法吗?
下面是代码
我正在尝试显示按字母顺序排序的所有 v-chips
我的数组应该排序还是 vuetify 中是否有任何 属性 完成了工作?
任何帮助将不胜感激
<template>
<div class="pa-4">
<v-chip-group
active-class="primary--text"
column
>
<v-chip
v-for="tag in tags"
:key="tag"
>
{{ tag }}
</v-chip>
</v-chip-group>
</div>
</template>
<script>
export default {
data: () => ({
tags: [
'Work',
'Home Improvement',
'Vacation',
'Food',
'Drawers',
'Shopping',
'Art',
'Tech',
'Creative Writing',
],
}),
}
</script>
您可以使用Array.sort()
方法简单地实现它。您可以在 mounted() 生命周期挂钩中排序,也可以直接在 v-for
指令内的模板本身中排序。
演示:
new Vue({
el: '#app',
vuetify: new Vuetify(),
data: () => ({
tags: [
'Work',
'Home Improvement',
'Vacation',
'Food',
'Drawers',
'Shopping',
'Art',
'Tech',
'Creative Writing',
]
})
})
<script src="https://unpkg.com/vue@2.x/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.css"/>
<div id="app">
<v-app id="inspire">
<v-chip-group active-class="primary--text" column>
<v-chip v-for="tag in tags.sort()" :key="tag">
{{ tag }}
</v-chip>
</v-chip-group>
</v-app>
</div>
直接在组件中对其进行排序导致我在渲染函数中出现无限更新循环。这解决了它:
<v-chip-group active-class="primary--text" column>
<v-chip v-for="tag in [...tags].sort()" :key="tag">
{{ tag }}
</v-chip>
</v-chip-group>
我个人会使用 computed
属性 对数据进行排序。
然后排序函数的逻辑将从模板中分离出来,如果您有更复杂的对象和更复杂的排序方法,那将更具可读性。
new Vue({
el: '#app',
vuetify: new Vuetify(),
computed: {
tagsSorted(){
return this.tags.sort()
}
},
data: () => ({
tags: [
'Work',
'Home Improvement',
'Vacation',
'Food',
'Drawers',
'Shopping',
'Art',
'Tech',
'Creative Writing',
]
})
})
<script src="https://unpkg.com/vue@2.x/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.css"/>
<div id="app">
<v-app id="inspire">
<v-chip-group active-class="primary--text" column>
<v-chip v-for="tag in tagsSorted" :key="tag">
{{ tag }}
</v-chip>
</v-chip-group>
</v-app>
</div>
嘿,我正在尝试按字母顺序对多个 V 芯片进行排序。 伙计们有什么想法吗?
下面是代码 我正在尝试显示按字母顺序排序的所有 v-chips 我的数组应该排序还是 vuetify 中是否有任何 属性 完成了工作? 任何帮助将不胜感激
<template>
<div class="pa-4">
<v-chip-group
active-class="primary--text"
column
>
<v-chip
v-for="tag in tags"
:key="tag"
>
{{ tag }}
</v-chip>
</v-chip-group>
</div>
</template>
<script>
export default {
data: () => ({
tags: [
'Work',
'Home Improvement',
'Vacation',
'Food',
'Drawers',
'Shopping',
'Art',
'Tech',
'Creative Writing',
],
}),
}
</script>
您可以使用Array.sort()
方法简单地实现它。您可以在 mounted() 生命周期挂钩中排序,也可以直接在 v-for
指令内的模板本身中排序。
演示:
new Vue({
el: '#app',
vuetify: new Vuetify(),
data: () => ({
tags: [
'Work',
'Home Improvement',
'Vacation',
'Food',
'Drawers',
'Shopping',
'Art',
'Tech',
'Creative Writing',
]
})
})
<script src="https://unpkg.com/vue@2.x/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.css"/>
<div id="app">
<v-app id="inspire">
<v-chip-group active-class="primary--text" column>
<v-chip v-for="tag in tags.sort()" :key="tag">
{{ tag }}
</v-chip>
</v-chip-group>
</v-app>
</div>
直接在组件中对其进行排序导致我在渲染函数中出现无限更新循环。这解决了它:
<v-chip-group active-class="primary--text" column>
<v-chip v-for="tag in [...tags].sort()" :key="tag">
{{ tag }}
</v-chip>
</v-chip-group>
我个人会使用 computed
属性 对数据进行排序。
然后排序函数的逻辑将从模板中分离出来,如果您有更复杂的对象和更复杂的排序方法,那将更具可读性。
new Vue({
el: '#app',
vuetify: new Vuetify(),
computed: {
tagsSorted(){
return this.tags.sort()
}
},
data: () => ({
tags: [
'Work',
'Home Improvement',
'Vacation',
'Food',
'Drawers',
'Shopping',
'Art',
'Tech',
'Creative Writing',
]
})
})
<script src="https://unpkg.com/vue@2.x/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.css"/>
<div id="app">
<v-app id="inspire">
<v-chip-group active-class="primary--text" column>
<v-chip v-for="tag in tagsSorted" :key="tag">
{{ tag }}
</v-chip>
</v-chip-group>
</v-app>
</div>