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 相关文章推荐
JavaScript 设计模式之组合模式解析
Apr 09 Javascript
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
javascript与CSS复习(二)
Jun 29 Javascript
javascript基础知识大集锦(一) 推荐收藏
Jan 13 Javascript
解决Extjs上传图片无法预览的解决方法
Mar 22 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
Dec 22 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 Javascript
webpack的tree shaking的实现方法
Sep 18 Javascript
vue基于v-charts封装双向条形图的实现代码
Dec 09 Javascript
基于vue实现探探滑动组件功能
May 29 Javascript
js实现QQ邮箱邮件拖拽删除功能
Aug 27 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
重置版游戏视频
2020/04/09 魔兽争霸
php 获取select下拉列表框的值
2010/05/08 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python open读写文件实现脚本
2008/09/06 Python
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
django迁移文件migrations的实现
2020/03/31 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
试述DBMS的主要功能
2016/11/13 面试题
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
小学教师学期末自我评价
2013/09/25 职场文书
教师辞职报告范文
2014/01/20 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
离婚协议书范文
2015/01/26 职场文书
三方协议书
2015/01/27 职场文书
员工担保书范本
2015/09/22 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis