Vue父子组建的简单通信之控制开关Switch的实现


Posted in Javascript onJune 04, 2018

Vue在目前是很好的框架,第一次使用Vue开发项目,刚开始的时候在一个控制开关的组件都花费了很久的时间,问题解决了,把自己的一些小问题给记录下来,方便以后看及帮助像我这样的初级萌新解决遇到的相同问题。

问题: 父组件传入值到子组件,子组件修改之后怎样传回到父组件 

父组件:内部首先要有三步

1、父组件中引用子组件

2、父组件中注册子组件

3、在子组件上绑定传值

父组件

<template> 
<div class="hello">  
<ul>   
<li @click="changeFlag">点击开关----------------父组件默认为{{flag}}</li>  
</ul>  
<v-child :childFlag='flag' @parentChangeFlag='parentChangeFlag'></v-child> 
//第三部 
</div>
</template>
<script>
import child from '子组件地址' //第一步
data(){
  return{
    flag:false  }},
components:{
   'v-child': child  //第二步
}
</script>

在第三步骤里,绑定了一个childFlag传给子组件,其值为flag

子组件

< template > 
<div class = "hello" >
 <ul > 
<li@click = "parentChangeFlag" > 显示 {
  {
    childFlag
  }
}---子元素: {
  {
    flag2
  }
} 
< /li>   
 <li @click="parentChangeFlag" v-show="childFlag"><img src="./images / ios_switch_off.png " alt="">
</li>   
<li @click="parentChangeFlag " v-show=" ! childFlag "><img src=". / images / ios_switch_on.png " alt=""></li>  
</ul> 
</div>
</template>
< script > export
default {
    props:
    {
      childFlag:
      {
        type:
        Boolean,
      default:
        true
      }
    },
    data() {
      return {
        flag2: this.childFlag
      };
    },
    watch: {
      childFlag(flag2) {
        this.flag2 = this.childFla
      }
    },methods: { // 子组件传值给父组件  parentChangeFlag(){   this.flag2 = !this.flag2   this.$emit('parentChangeFlag',this.flag2)  } }};</script>

在父组件里,传了一个childFlag下来,我们要在子组件里去接收,方式用props,具体的可以看官方文档, 创建接收之后呢,我们需要把传进来的值绑定给我们子组件的data值即(flag2),完成这一步的话,我们就完成了父组件往子组件进行传值。

上面只是完成了父传子,下面讲述怎么子传父

子组件所需做的事情:

首先,我们需要在子组件里进行改变其状态值,这样我们就创建了一个parentChangeFlag点击事件,进而改变当前的子元素的(flag2)值;

其次,改变完当前的值,我们就要把子元素的状态值给传回父组件,这样就用到了$emit方法,this.$emit('function',Value);   function指父组件里监听子元素点击事件的函数;Value就代表你需要传回父元素的值。

父组件所需做的事情:

在父组件中,创建一个监听子元素改变data值的函数(即@parentChangeFlag='parentChangeFlag')

methods: {
  changeFlag() {
    //父组建点击改变元素传值给子组件  
    this.flag = !this.flag
  },
  parentChangeFlag: function(flag2) {
    //父组件监听子组件点击的函数 flag2为子组件传进来的值,把值赋给当前元素,就实现了父子之间的通信   
    console.log(flag2) this.flag = flag2
  }
}

当你完成父子组件各自所需要的工作时候,就恭喜你了,已经完成了Switch的效果,效果图如下

Vue父子组建的简单通信之控制开关Switch的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 经典动画菜单效果代码
Jan 26 Javascript
jQuery 中使用JSON的实现代码
Dec 01 Javascript
Javascript 垃圾收集机制介绍理解
May 14 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
jquery实现简单文字提示效果
Dec 02 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
原生javascript实现分页效果
Apr 21 Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
es6中let和const的使用方法详解
Feb 24 Javascript
深入浅析JS中的严格模式
Jun 04 #Javascript
详解如何在你的Vue项目配置vux
Jun 04 #Javascript
详解vue-loader在项目中是如何配置的
Jun 04 #Javascript
vue.js打包之后可能会遇到的坑!
Jun 03 #Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
Jun 02 #Javascript
vue之将echart封装为组件
Jun 02 #Javascript
React学习笔记之高阶组件应用
Jun 02 #Javascript
You might like
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
js学习阶段总结(必看篇)
2016/06/16 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
js实现每日签到功能
2018/11/29 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python图像常规操作
2017/11/11 Python
Python自定义线程类简单示例
2018/03/23 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python多任务及返回值的处理方法
2019/01/22 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
日语专业毕业生求职信
2013/12/04 职场文书
给老师的检讨书
2014/02/11 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Python保存并浏览用户的历史记录
2022/04/29 Python