vue父组件触发事件改变子组件的值的方法实例详解


Posted in Javascript onMay 07, 2019

父组件向子组件通信

业务场景:现在我要在父组件点击一个回退按钮,这个回退会传进子组件中(子组件中有两步进程),子组件来处理。

解决方案

起初我是父组件通过props传值,但是发现只有组件第一次加载时才能传值,通过事件改变的父组件值并不会再通过过props传递,也就是说props只有加载组件时才会工作,并不会根据值改变动态操作

后面,我是通过操作dom的方法,this.$refs.children这样直接操作子组件

<ProgressTwo ref="progressTwo" v-else-if="progress==2" @second="recordProgress"></ProgressTwo> //这是子组件
 goSecond: function(){  //这是操作子组件的方法
  this.$refs.progressTwo.second = true
  this.second = false
}

注释:其实我们一直被父子组件概念束缚了,子组件就是相当于一个被包裹的div,只是那个div里有很多标签而已,或者可以理解为我们在父组件里用iframe嵌套了一个页面,这个页面是子组件(这是帮助理解的粗话)

现在讲讲父子组件通信

父组件向子组件传值

父组件

html

<div>
  <NotFound v-else :searchThing="search"></NotFound> //search是父组件要传的值
</div>

子组件

在script中拿值

props:{
  searchThing: String  //也可以给它一个默认值 (defaultAddress: {Type: Object,default:()=> 'default'})
},

子组件向父组件传值

通过发射函数

子组件

在script中通过函数告诉父组件

gotoPay: function(){
  this.$emit('second',data) //data是你要向父组件传的值(可传可不传看需求)
}

父组件

html

<ProgressTwo ref="progressTwo" v-else-if="progress==2" @second="recordProgress"></ProgressTwo>

script

父组件通过自定义的second事件监听子组件的发射

recordProgress: function(val){  //val用于接收子组件传过来的值
      if(val==true){
        this.second = val
      }else{
        if(val==false){
          this.progress = 3
        }else{
          this.progress = 1
        }
      }
    },

总结

以上所述是小编给大家介绍的vue父组件触发事件改变子组件的值的方法实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
简单介绍jsonp 使用小结
Jan 27 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
使用jquery实现的循环连续可停顿滚动实例
Nov 23 Javascript
详解angular脏检查原理及伪代码实现
Jun 08 Javascript
React之PureComponent的使用作用
Jul 10 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
IE9 elementUI文件上传的问题解决
Oct 17 Javascript
vue实现路由监听和参数监听
Oct 29 Javascript
原生JS实现拖拽效果
Dec 04 Javascript
微信小程序:数据存储、传值、取值详解
May 07 #Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 #Javascript
详解Vue前端生产环境发布配置实战篇
May 07 #Javascript
7个好用的JavaScript技巧分享(译)
May 07 #Javascript
微信小程序实现获取用户信息并存入数据库操作示例
May 07 #Javascript
vue搜索和vue模糊搜索代码实例
May 07 #Javascript
详解Vue demo实现商品列表的展示
May 07 #Javascript
You might like
php+mysql写的简单留言本实例代码
2008/07/25 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
js模拟实现Array的sort方法
2007/12/11 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
Angularjs上传图片实例详解
2017/08/06 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
node app 打包工具pkg的具体使用
2019/01/17 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
2014年清明节寄语
2014/04/03 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
2014年市场部工作总结
2014/11/25 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
MySQL分布式恢复进阶
2022/07/23 MySQL