Vue -父页面向子组件传递数据
不积跬步无以至千里~ 细节决定成败,加油💪🏻
一、实现效果 ??
点击父页面 ->表格 ->对应行操作列 ->“详情”按钮 ,打开子组件对话框,并将对应行数据传递给子组件进行展示。??
🐯父页面:卡券库
🐯子组件:券码详情
二、实现代码 ??
父页面couponLibrary.vue :
<el-table-column label="操作" width="120px" align="left">
<template slot-scope="{ row }">
<el-button
type="text"
class="border-right operate-btn"
size="mini"
@click="handleDetail(row)"
>
详情
</el-button>
</template>
</el-table-column>
<el-dialog title="券码详情" :visible.sync="dialogCouponDetailVisible">
<coupon-detail v-if="dialogCouponDetailVisible" :detailData="detailData" />
</el-dialog>
import CouponDetail from "@/components/others/couponDetail";
export default {
components: {
CouponDetail,
},
data() {
return {
dialogCouponDetailVisible: false,
detailData: {},
}
},
methods: {
handleDetail(row) {
this.dialogCouponDetailVisible = true;
this.detailData = row;
},
}
}
【补充】el-dialog 的官方文档:https://element.eleme.cn/#/zh-CN/component/dialog
子组件couponDetail.vue :
export default {
props: {
detailData: {
type: Object,
},
},
mounted() {
console.log(this.detailData);
},
}
子组件mounted 里打印到的数据如下:
🐯当当当~ 数据传递成功啦~
三、注意事项 ??
如下图,使用el-dialog 打开子组件时:一定要记得给子组件加v-if="dialogCouponDetailVisible" 哟~ ?
- 不然会出现问题:当打开一次子组件对话框后,关闭该子组件对话框,再点击父页面里另外一行表格的详情按钮 打开子组件对话框后,
bug 出现了😲:竟然展示的还是上一个子组件对话框的内容。
或许这时,有些爱动脑筋的小萝卜儿会说:通过查阅el-dialog 的官方文档,针对上述问题,我觉得还有个解决方法呢:
- 把如下图的属性
destroy-on-close 设置为true 。?
结论:用destroy-on-close 这个属性解决滴话,会有很大的问题哟,推荐用v-if 解决。
- 注意这个属性是:关闭 时销毁 Dialog 中的元素。至于其细节区别可以参考优秀的博文哟~。
|