(vue.js)关于Vuejs的$emit和$on传值不成功的问题

Posted 前端知识精选

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(vue.js)关于Vuejs的$emit和$on传值不成功的问题相关的知识,希望对你有一定的参考价值。


关于网友提出的“ (vue.js)关于Vuejs的$emit和$on传值不成功的问题”问题疑问,本网通过在网上对“ (vue.js)关于Vuejs的$emit和$on传值不成功的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: (vue.js)关于Vuejs的$emit和$on传值不成功的问题
描述:

最近学习Vue.js,想学学怎么在两个组件之间传值,于是在网上找到了关于$on和$emit的用法,可是却出现$on中的方法不执行的问题,请教各位前辈们小弟是哪里有遗漏吗

在Main.js中new的一个Vue实例 

在组件1中设置值
(vue.js)关于Vuejs的$emit和$on传值不成功的问题

在组件2中接收值
(vue.js)关于Vuejs的$emit和$on传值不成功的问题


解决方案1:

猜测。。
组件1调用“dpID”方法的时候
组件2已经销毁了,所以获取不到值。。。

解决方案2:

vue实例的data选项需要是一个函数 返回一个对象

new Vue({
    ...
    data(){
        return {
            eventHub: new Vue()
        }
    }
    ...
})


解决方案3:

组件2是你要跳转到的页面里的吗?是不是组件当时还没被创建。

解决方案4:

你emit的是id,on监听也应该是id啊

解决方案5:

我试了下,不涉及页面跳转这种组件间传值的方法是没有问题的

https://jsfiddle.net/hugaungj...

如楼上@Showonne所说,可以通过 $route.push 的方式传参,如果是从组件1通过链接去组件2的,也可以在组件1中这样写:

<router-link :to="{path: '/chioce', query: { id }}"></router-link>

你可能是定义的是这种路由 chioce/:id, 那么只需把上面的 query 换成 params 即可。

除了在 created 获取参数,我一般习惯在 data 中获取,方便页面中其它地方使用:

{
  data() {
    id: this.$route.params.id
  }
}


解决方案6:

这种页面跳转用路由的params或者query去传

a页面

cc (id) {
  this.$router.push({path: '/chioce', query: {id: id}})
}

b页面

created () {
  console.log(this.$route.query.id)
}



以上介绍了“ (vue.js)关于Vuejs的$emit和$on传值不成功的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4363520.html

web前端大全

每天为您分享Web前端相关的技术文章,精选课程,热点资讯,工具资源,个人随笔。


以上是关于(vue.js)关于Vuejs的$emit和$on传值不成功的问题的主要内容,如果未能解决你的问题,请参考以下文章

VueJs:如何使用 $emit(optionalPayload) 和 $on 将“计算函数”值从子组件传递给父组件?

子到父数据Vue JS

vuejs子组件怎么获取父组件的值

vue.js学习笔记— 父子组件之间通信的第一种方式 props 和 $emit

Vue.js学习系列---vuejs指令

Vue.js 入门