Vue3/Vuetify模板插槽变量遮蔽:如何同时显示父子对象
解决嵌套v-data-table中插槽变量遮蔽的问题
在嵌套的v-data-table场景中,父子插槽的item变量同名导致父级变量被遮蔽,最简便的解决方式是在父级插槽定义时直接重命名变量,无需额外复杂操作。
方法:重命名父级插槽的item变量
利用ES6对象解构的重命名语法,在父级expanded-row插槽中将原本的item改成自定义名称(比如parentItem),这样父级变量就不会被子级的item覆盖,子级插槽可以同时访问父、子两级的变量。
修改后的代码示例:
<v-data-table :items="someParentItems" ...> <template v-slot:expanded-row="{ columns, item: parentItem }"> PARENT {{ parentItem }} <v-data-table :items="someChildItems" ...> <template #item.someField="{ item: childItem }"> CHILD {{ parentItem }} {{ childItem }} </template> </v-data-table> </template> </v-data-table>
说明
- 父级插槽通过
item: parentItem完成变量重命名,作用域仅局限在当前父级模板内,不会影响其他逻辑。 - 子级插槽也可按需将
item重命名为childItem,让代码语义更清晰,避免变量混淆。 - 该方式完全基于Vue插槽的原生语法实现,不需要额外的计算属性或方法,操作简洁高效。
内容的提问来源于stack exchange,提问作者ekjcfn3902039
相关产品推荐
相关产品推荐

