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中选择块并改变属性值的方法
Jul 31 Javascript
jQuery横向擦除焦点图特效代码分享
Sep 06 Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 Javascript
JQuery为元素添加样式的实现方法
Jul 20 Javascript
socket.io实现在线群聊功能
Apr 07 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
微信小程序wepy框架笔记小结
Aug 08 Javascript
JSON的parse()方法介绍
Jan 31 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
vue+elementUI组件table实现前端分页功能
Nov 15 Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 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
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
用python读写excel的方法
2014/11/18 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
手把手教你python实现SVM算法
2017/12/27 Python
python学生管理系统代码实现
2020/04/05 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python pytest进阶之fixture详解
2019/06/27 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Python any()函数的使用方法
2019/10/28 Python
python新手学习可变和不可变对象
2020/06/11 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
一组SQL面试题
2016/02/15 面试题
最新远光软件笔试题面试题内容
2013/11/08 面试题
如何进行Linux分区优化
2016/09/13 面试题
秋季运动会活动方案
2014/02/05 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
海飞丝的广告词
2014/03/20 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
2014年领班工作总结
2014/11/25 职场文书