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 option location 页面跳转实现代码
Dec 27 Javascript
判断控件是否已加载完成的代码
Feb 24 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
实例详解jQuery结合GridView控件的使用方法
Jan 04 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
Dec 07 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
微信小程序实现页面跳转传值的方法
Oct 12 Javascript
Vue 中的compile操作方法
Feb 26 Javascript
JS实现快递单打印功能【推荐】
Jun 21 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
分享JS表单验证源码(带错误提示及密码等级)
Jan 05 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使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
js定时器实例分享
2016/12/20 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
好邻里事迹材料
2014/01/16 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
销售业务员岗位职责
2015/02/13 职场文书
2015选调生工作总结
2015/07/24 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL