Vue.js 在Vuetify中的datatable内生成动态模式/对话框
我有一个数据表,有很多列。我只想在datatable中显示几列,当用户单击行中的“更多”链接时,在模式/对话框中显示其余数据 下面是我的模板Vue.js 在Vuetify中的datatable内生成动态模式/对话框,vue.js,vuetify.js,Vue.js,Vuetify.js,我有一个数据表,有很多列。我只想在datatable中显示几列,当用户单击行中的“更多”链接时,在模式/对话框中显示其余数据 下面是我的模板 <v-data-table :headers="tableHeaders" :items="creditCardTransactions"> <template v-slot:item.moreInfo="{ item }"> <v-icon
<v-data-table :headers="tableHeaders" :items="creditCardTransactions">
<template v-slot:item.moreInfo="{ item }">
<v-icon @click.stop="$set(dialogNote, item.id, true)">mdi-information</v-icon>
<v-dialog v-model="dialogNote[item.id]" :key="item.id">
<v-card>
<v-card-title>
<span>More Info</span>
</v-card-title>
<v-card-text>
<v-simple-table>
<template v-slot:default>
<tr>
<th width="25%">Column A</th>
<td>{{ item.ColumnA }}</td>
</tr>
<tr>
<th width="25%">Column B</th>
<td>{{ item.ColumnB }}</td>
</tr>
</template>
</v-simple-table>
</v-card-text>
<v-card-actions>
<v-btn color="primary" @click.stop="$set(dialogNote, item.id, false)">Close</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
</v-data-table>
问题是,这会为datatable上的每一行生成一个模式/对话框,这意味着页面上有多余的HTML代码行,这意味着页面速度慢
问题是,我怎样才能拥有一个模态/对话框并重用它?例如,页面上只有一个模式,当在该行上单击“更多”按钮时,模式的内容会发生变化,反映出该行?
<v-data-table>
... contents
<v-btn @click="showDialog(item)">Show More</v-btn>
</v-data-table>
<v-dialog v-model="show">
... dialog content
... currentDialogItem
</v-dialog>
//scripts
export default {
data(){
return {
show: false,
currentDialogItem: {}
}
},
methods:{
showDialog(item){
this.show = true;
this.currentDialogItem = item;
}
}
}
... 目录
显示更多
... 对话内容
... currentDialogItem
//剧本
导出默认值{
数据(){
返回{
秀:假,,
currentDialogItem:{}
}
},
方法:{
显示对话框(项目){
this.show=true;
this.currentDialogItem=项目;
}
}
}
好的,您可以从v-data-table中创建v-dialog,在表中只需将方法添加到按钮,即可将数据表项传递到对话框中。
因此:
v-model=“selectedDialogNote”
selectedDialogNote
<v-data-table>
... contents
<v-btn @click="showDialog(item)">Show More</v-btn>
</v-data-table>
<v-dialog v-model="show">
... dialog content
... currentDialogItem
</v-dialog>
//scripts
export default {
data(){
return {
show: false,
currentDialogItem: {}
}
},
methods:{
showDialog(item){
this.show = true;
this.currentDialogItem = item;
}
}
}