vue组件传值

如何实现父子组件之间的传值

1.父组件向子组件传值

1.在子组件中设置props:[‘commentId‘] //子组件用来接收父组件传递过来值的属性名称

2.在父组件的自定义子组件标签中设置<subComponent :commentId="this.$route.params.photoId"></subComponent>//父组件传递值给子组件

2.子组件向父组件传值

1.在父组件的自定义标签中设置一个自定义函数<subComponent v-on:paramsChange="getSubComponentParams"></subComponent>

2.在父组件的methods中声明函数

?


1

2

3

4

getSubComponentParams(params){

//接收来自子组件的参数params

  this.myParams = params;

}

3.在子组件中传递参数

?


1

2

3

4

5

/**

* 参数1:要触发的事件名称

* 参数2:传递的值

*/

this.$emit(‘paramsChange‘,this.params)

如何实现非父子组件的传值

非父子组件中两个组件没有联系,不能使用this来传值,所以我们只能通过第三方的变量,来达到传值的效果,这个第三方变量就是:

使用一个空的 Vue 实例作为中央事件总线

传值步骤:

1.创建一个公用js组件 在组件内导出一个空的Vue实例,比如新建一个commonvue.js文件

?


1

2

3

4

5

6

7

8

9

import Vue from ‘vue‘

export default new Vue() //es6的写法

/**

 * 相当于下面这样写

 *

 * const bus = new Vue()

 * module.exports = bus

 */

2.在组件A中传递参数

?


1

bus.$emit(‘goodsCount‘,this.myCount)

3.在组件B中接收参数

?


1

2

3

4

5

6

7

bus.$on(‘goodsCount‘,(goodsCount)=>{

   const oldVal = $("#badgeId").text()

   const lastVal = parseInt(oldVal) + goodsCount

   console.log(lastVal)

   $("#badgeId").text(lastVal)

 })

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

原文链接:http://www.jianshu.com/p/d60d56afebd4

本文介绍了浅谈Vue父子组件和非父子组件传值问题,分享给大家,具体如下:

1.如何创建组件

1.新建一个组件,如:在goods文件夹下新建goodsList.vue

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<template>

  <div class=‘tmpl‘>

    goodsList组件

  </div>

</template>

<style>

</style>

<script>

  export default {

    data() {

      return{}

    },

    created() {

    },

    methods: {

    },

    components:{

    }

  }

</script>

2.在main.js中引入 import goodsList from ‘goods/goodsList.vue‘

3.在main.js中创建路由对象,创建路由规则

?


1

2

3

4

5

const router = new VerRouter({

  routes[

    {path:/goods/goodsList,component:goodsList}

  ]

})

4.在主组件App.vue中设置 <router-link to="/goods/goodsList">商品列表</router-link>

系统会自动帮我们把这个标签转化为a标签href="#/goods/goodsList" rel="external nofollow"

2.如何在父组件中嵌入子组件

1.新建一个子组件 subcomponent.vue

2.在父组件中引入 import subComponent from ‘../subComponent/subcomponent.vue‘

3.在父组件中注册 components

?


1

2

3

4

5

6

export default {

   components:{

     //如果属性名和值相同,可以简写

     subComponent

   }

 }

4.在父组件指定位置写一个自定义标签<subComponent></subComponent>

3.如何实现父子组件之间的传值

1.父组件向子组件传值

1.在子组件中设置props:[‘commentId‘] //子组件用来接收父组件传递过来值的属性名称

2.在父组件的自定义子组件标签中设置<subComponent :commentId="this.$route.params.photoId"></subComponent>//父组件传递值给子组件

2.子组件向父组件传值

1.在父组件的自定义标签中设置一个自定义函数<subComponent v-on:paramsChange="getSubComponentParams"></subComponent>

2.在父组件的methods中声明函数

?


1

2

3

4

getSubComponentParams(params){

//接收来自子组件的参数params

  this.myParams = params;

}

3.在子组件中传递参数

?


1

2

3

4

5

/**

* 参数1:要触发的事件名称

* 参数2:传递的值

*/

this.$emit(‘paramsChange‘,this.params)

如何实现非父子组件的传值

非父子组件中两个组件没有联系,不能使用this来传值,所以我们只能通过第三方的变量,来达到传值的效果,这个第三方变量就是:

使用一个空的 Vue 实例作为中央事件总线

传值步骤:

1.创建一个公用js组件 在组件内导出一个空的Vue实例,比如新建一个commonvue.js文件

?


1

2

3

4

5

6

7

8

9

import Vue from ‘vue‘

export default new Vue() //es6的写法

/**

 * 相当于下面这样写

 *

 * const bus = new Vue()

 * module.exports = bus

 */

2.在组件A中传递参数

?


1

bus.$emit(‘goodsCount‘,this.myCount)

3.在组件B中接收参数

?


1

2

3

4

5

6

7

bus.$on(‘goodsCount‘,(goodsCount)=>{

   const oldVal = $("#badgeId").text()

   const lastVal = parseInt(oldVal) + goodsCount

   console.log(lastVal)

   $("#badgeId").text(lastVal)

 })

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

原文链接:http://www.jianshu.com/p/d60d56afebd4

时间: 2024-11-09 06:01:13

vue组件传值的相关文章

vue 组件传值

vue 组件传值分为 父传子.子传父.非父子传值 父组件访问子组件的值 子组件中通过this.$emit('childName',childData) 父组件通过v-on监听一个事件  @childName = "childData"    methods:{ childData (data) { console.log(data) } } 父组件通过 ref 获取子组件的值 在子组件通过ref,在父组件中通过this.$refs.refsName访问子组件中的值 注意:当 ref 和

vue 组件传值踩坑日记 1

今天在用平时很少用到的传值方式,是V2.4以后新加入属性$attrs $listener 以及inheritAttrs. 总结:这样形式的代码适合套娃模式的组件传递,却不适合兄弟组件的传值,那样的传值方式,需要创建一个事件总线,说白了就是新new一个空的vue,详见,我的第二篇日志<vue 组件传值踩坑日记 2> 废话不多说,直接上代码,大家可以边看注释边测试一下效果吧 <!DOCTYPE html> <html lang="en"> <hea

Vue组件传值、refs、插槽

一.组件传值 1.父组件向子组件传值 因为子组件本身不能拿到父组件的data数据来用,所以在子组件里用props接收,props是一个数组 父组件向子组件传值 <div id="app"> <com1 :parent="msg" :parentarr="arr"></com1> </div> <template id="com"> <div> {{pare

vue组件传值之父传子

1.父组件给子组件传值  home父组件  header子组件  关键字props home代码 <template> <div> <v-header :title="title" :run="run"></v-header> <h2>我是home组件</h2> </div> </template> <script> import Header from '.

vue 组件传值踩坑日记 2

这里介绍一下适合兄弟组件和父子,祖孙组件之间的传值方式-事件总线,废话不多说,直接上代码 总结:说白了这东西就是一种发布订阅的模式,发数据的一方用$emit发,各个接听方用$on接受对应key的事件,on的时候,就选择在DOM挂在完毕以后进行监听,通过这样的事件去修改数据,完成传递工作,感兴趣的同学可以吧这个代码拿下去直接调试运行一下看看 <!DOCTYPE html> <html lang="en"> <head> <meta charset

【vue组件之间互相传值:父传子,子传父】

今看到一篇很不错的vue组件传值文章,便于理解,遂做笔记- 一般页面的视图App.vue应为这样 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue2.Child.vue的中创建props,然后创建一个名为message的属性 3.在App.vue中注册Child组件,并在template中加入child标签,标签中添加message属性并赋值 4.保存修改的文件,查看浏览器 5.我们依然可以对message的值进行v-bind动态绑定 此

vue 中父子组件传值:props和$emit

1 父组件向子组件传值:通过props数组: //父组件 App.vue <template> <div id="app"> <hello mes-father="爸爸无可奉告"></hello> </div> </template> //子组件Hello.vue <template> <div class="hello"> <p>{{me

vue知识总结第一篇vue组件的定义以及父子组件的传值。

vue中是一个.vue结尾的vue文件其中包括<template>标签里边写html,而react是在render函数中..script用来写js,style中用来写css.那么我们来看看vue是怎么写的吧 子组件中 1,用export default 导出子组件,其中标红的是用来父子组件传值的this.$emit('reChild')指发送一个自定事件到父组件中,父组件中只要在引入这个子组件标签的时候v-on:reChild="rece"其中rece为父组件中method

Vue父子组件和非父子组件传值问题

父组件跟子组件之间的传值(具体参考lonzhubb商城) 1.父组件传值给子组件形式,ifshop是要传的对象,右边ifshop代表要传的这个对象的数据 <v-select  :ifshop="ifshop"  :clickType="clickType" @close="close" @addShop="sureAddShop"></v-select> 2.子组件接收父组件的数据用props prop