小编给大家分享一下vue子组件改变父组件传递prop值通过sync实现数据双向绑定的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
DEMO
这是父组件的代码:
<template>
<div>
<app-refund :dialogVisible="refundVisible"></app-refund>
// 下面是一个按钮,点击此按钮会触发refundFunc,并显示弹窗
<el-dropdown-item @click.native="refundFunc">点击此按钮显示弹窗</el-dropdown-item>
</div>
</template>
<script>
import refund from '@/pages/customer/refund'
export default {
components: {
"app-refund":refund
},
data(){
return {
refundVisible:false
}
},
methods: {
refundFunc:function(){
this.refundVisible=true
}
}
}
</script>
以下是子组件的代码,为了使代码看起来更方便简洁,已经把其他冗余的代码删除,只留下能实现功能的必要代码
<template>
<div>
<el-dialog
title="退余额"
:visible.sync="dialogVisible"
width="630px">
</el-dialog>
</div>
</template>
<script>
export default {
props:{
dialogVisible: {
type:Boolean,
default: false,
}
},
}
</script>
以上便是父组件控制子组件的显示,而在子组件关闭弹窗的例子,这样肯定是不行的,因为在vue中props数据是单向流,不能在子组件改变父组件传过来的prop值,而解决方式就是用emit来更新prop值,解决方案如下。
父组件代码,js部分和上面一模一样,这里就不重复写了:
<template>
<div>
<app-refund :dialogVisible.sync="refundVisible"></app-refund>
// 下面是一个按钮,点击此按钮会触发refundFunc,并显示弹窗
<el-dropdown-item @click.native="refundFunc">点击此按钮显示弹窗</el-dropdown-item>
</div>
</template>
子组件代码:
<template>
<div>
<el-dialog
title="退余额"
:visible.sync="dialogVisible"
:before-close="hidePanel"
width="630px">
</el-dialog>
</div>
</template>
<script>
export default {
props:{
dialogVisible: {
type:Boolean,
default: false,
}
},
methods: {
// 利用sync进行数据双向绑定,子组件修改dialogVisible的值,并响应到父组件
hidePanel() {
this.$emit('update:dialogVisible', false)
}
},
}
</script>
这里用到了elementUI的before-close方法,是弹窗关闭前的回调,用在这里的意思是在element自带的关闭弹窗方法之前调用hidePanel方法,由我们来控制弹窗的关闭,这样就能在关闭时更新dialogVisible的值,解决报错。
Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和dom,可以大大提升访问速度和用户体验。
看完了这篇文章,相信你对“vue子组件改变父组件传递prop值通过sync实现数据双向绑定的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。