Vue三种常用传值示例(父传子、子传父、非父子)


Posted in Javascript onJuly 24, 2018

1、父组件向子组件进行传值:

父组件:

<template>
  <div>
  父组件:
  <input type="text" v-model="name">
  <br>
  <br>
  <!-- 引入子组件 -->
  <child :inputName="name"></child>
  </div>
 </template>
 <script>
  import child from './child'
  export default {
  components: {
   child
  },
  data () {
   return {
   name: ''
   }
  }
  }
 </script>

子组件:

<template>
  <div>
  子组件:
  <span>{{inputName}}</span>
  </div>
 </template>
 <script>
  export default {
  // 接受父组件的值
  props: {
   inputName: String,
   required: true
  }
  }
 </script>

2.子组件向父组件传值

子组件:

<template>
   <div>
   子组件:
   <span>{{childValue}}</span>
   <!-- 定义一个子组件传值的方法 -->
   <input type="button" value="点击触发" @click="childClick">
   </div>
  </template>
  <script>
   export default {
   data () {
    return {
    childValue: '我是子组件的数据'
    }
   },
   methods: {
    childClick () {
    // childByValue是在父组件on监听的方法
    // 第二个参数this.childValue是需要传的值
    this.$emit('childByValue', this.childValue)
    }
   }
   }
  </script>

父组件:

<template>
 <div>
 父组件:
 <span>{{name}}</span>
 <br>
 <br>
 <!-- 引入子组件 定义一个on的方法监听子组件的状态-->
 <child v-on:childByValue="childByValue"></child>
 </div>
</template>
<script>
 import child from './child'
 export default {
 components: {
  child
 },
 data () {
  return {
  name: ''
  }
 },
 methods: {
  childByValue: function (childValue) {
  // childValue就是子组件传过来的值
  this.name = childValue
  }
 }
 }
</script>

3.非父子组件进行传值。(非父子组件之间传值,需要定义个公共的公共实例文件bus.js,作为中间仓库来传值,不然路由组件之间达不到传值的效果。)

公共bus.js

//bus.js
import Vue from 'vue'
export default new Vue()

组件A:

<template>
 <div>
 A组件:
 <span>{{elementValue}}</span>
 <input type="button" value="点击触发" @click="elementByValue">
 </div>
</template>
<script>
 // 引入公共的bug,来做为中间传达的工具
 import Bus from './bus.js'
 export default {
 data () {
  return {
  elementValue: 4
  }
 },
 methods: {
  elementByValue: function () {
  Bus.$emit('val', this.elementValue)
  }
 }
 }
</script>

组件B:

<template>
  <div>
  B组件:
  <input type="button" value="点击触发" @click="getData">
  <span>{{name}}</span>
  </div>
 </template>
 <script>
  import Bus from './bus.js'
  export default {
  data () {
   return {
   name: 0
   }
  },
  mounted: function () {
   var vm = this
   // 用$on事件来接收参数
   Bus.$on('val', (data) => {
   console.log(data)
   vm.name = data
   })
  },
  methods: {
   getData: function () {
   this.name++
   }
  }
  }
 </script>

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

Javascript 相关文章推荐
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
javascript常用对话框小集
Sep 13 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
JavaScript基础知识学习笔记
Dec 02 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
jquery实现焦点图片随机切换效果的方法
Mar 12 Javascript
JavaScript给url网址进行encode编码的方法
Mar 18 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
canvas绘制七巧板
Feb 03 Javascript
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 Javascript
微信小程序实现横向增长表格的方法
Jul 24 #Javascript
vue中使用sessionStorage记住密码功能
Jul 24 #Javascript
Vue-router 中hash模式和history模式的区别
Jul 24 #Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 #Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
Jul 24 #Javascript
JS实现全屏预览F11功能的示例代码
Jul 23 #Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 #Javascript
You might like
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
django如何实现视图重定向
2019/07/24 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
详解Django配置JWT认证方式
2020/05/09 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
水利公司纪检监察自我鉴定
2014/02/25 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
婚前保证书范文
2015/02/28 职场文书
自荐信怎么写
2015/03/04 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
全网非常详细的pytest配置文件
2022/07/15 Python