我想根據我選擇的鍵在串列上動態顯示資料。專案串列可以有多個鍵。我想動態選擇要顯示到串列中的資料,而無需對實際密鑰進行硬編碼。
<template>
<v-card
class="mx-auto"
max-width="500"
>
<v-list>
<v-list-item-group v-model="model">
<v-list-item
v-for="(item, i) in items"
:key="i"
>
<v-list-item-icon>
<v-icon v-text="item.icon"></v-icon>
</v-list-item-icon>
<v-list-item-content>
<v-list-item-title v-text="item.data_to_display"></v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list-item-group>
</v-list>
</v-card>
</template>
<script>
export default {
data: () => ({
data_to_display: 'name', // or data_to_display: 'text'
items: [
{
age: 34,
name: 'abc',
marks: null
},
{
age: 12,
name: '',
marks: 60
},
{
age: '20,
name: 'lmn',
marks: 70
},
],
model: 1,
}),
}
</script>
上面的專案串列有多個鍵。我想根據我從腳本中選擇的鍵顯示其中的任何一個名稱、年齡或標記
uj5u.com熱心網友回復:
就像@Sami 評論的那樣,您可以使用 key 來顯示資料,并且在計算屬性過濾器中只有具有值的:
new Vue({
el: '#app',
vuetify: new Vuetify(),
data() {
return {
data_to_display: 'name',
items: [{age: 34, name: 'abc', marks: null}, {age: 12, name: '', marks: 60}, {age: 20, name: 'lmn', marks: 70 },],
model: 1,
}
},
computed: {
filteredItems() {
return this.items.filter(i => i[this.data_to_display] )
}
}
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">
<div id="app">
<v-app>
<v-main>
<v-container>
<v-card
class="mx-auto"
max-width="500"
>
<v-list>
<v-list-item-group v-model="model">
<v-list-item
v-for="(item, i) in filteredItems"
:key="i"
>
<v-list-item-icon>
<v-icon v-text="item.icon"></v-icon>
</v-list-item-icon>
<v-list-item-content>
<v-list-item-title v-text="item[data_to_display]"></v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list-item-group>
</v-list>
</v-card>
</v-container>
</v-main>
</v-app>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.js"></script>
uj5u.com熱心網友回復:
轉換v-text="item.data_to_display"為v-text="item[data_to_display]"將解決問題。
brackets如果屬性名稱有特殊字符,則需要使用。如果您想動態搜索屬性的值,括號表示法會非常有用。
如在其中一個物件中,您的name屬性值為空,它顯示為空白。
作業演示:
new Vue({
el: "#app",
vuetify: new Vuetify(),
data: {
data_to_display: 'name',
model: 1,
items: [{
age: 34,
name: 'abc',
marks: null
}, {
age: 12,
name: '',
marks: 60
}, {
age: '20',
name: 'lmn',
marks: 70
}]
}
})
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.js"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">
<div id="app">
<v-app>
<v-main>
<v-container>
<v-card
class="mx-auto"
max-width="500"
>
<v-list>
<v-list-item-group v-model="model">
<v-list-item
v-for="(item, i) in items"
:key="i"
>
<v-list-item-icon>
<v-icon v-text="item.icon"></v-icon>
</v-list-item-icon>
<v-list-item-content>
<v-list-item-title v-text="item[data_to_display]"></v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list-item-group>
</v-list>
</v-card>
</v-container>
</v-main>
</v-app>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442950.html
標籤:javascript Vue.js Vuejs2 Vuetify.js 动态列表
上一篇:評估變數作為vue中的HTML
