老莫的笔记本  
  
查看: 1105|回复: 0

兄弟组件【非父子组件】之间的传值

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-11-26 23:39:52 | 显示全部楼层 |阅读模式
这就麻烦喽,咳咳  我现在学到的地方麻烦而已,后面就不麻烦了;

第一步,先滚过去新建一个js文件  重新 写一个vue实例并暴露出去;
/src/model/vueEvent.js
  1. import Vue from 'vue
  2. var VueEvent = new Vue;
  3. export default VueEvent;
复制代码

第二步, 在需要广播的地方引入刚刚的实例 【我是从home向news中广播数据】,并利用 VueEvent.$emit('名称','值') 广播出该事件VueEvent可换
Home.vue
  1. <template>
  2.     <div id="home">
  3.         <!-- 头部组件引入 -->
  4.         这是home组件
  5.         <button @click="abc()">给News广播</button>
  6.     </div>
  7. </template>
  8. <script>
  9. import Head from "./Head.vue";
  10. import VueEvent from "../model/vueEvent.js"
  11. export default {
  12.   data() {
  13.     return {
  14.       b:false
  15.       ,todata:'这是home组件的值'
  16.       ,mvc:'溜溜留'
  17.     };
  18.   },
  19.   methods: {
  20.     //  向news广播
  21.     abc(){
  22.         // 广播数据
  23.         VueEvent.$emit('to-news',this.todata)
  24.     }
  25.   }
  26. };
  27. </script>
  28. <style scoped>
  29. </style>
复制代码

第三步 ,在需要的组件中 接收 广播来的数据 【注意要引入实例化的vue】.利用 $on 写在,mouted(){ }中
News.vue
  1. <template>
  2.     <div id="news">
  3.         这是news组件
  4.     </div>
  5. </template>
  6. <script>
  7. import VueEvent from "../model/vueEvent.js";
  8. export default {
  9.   data() {
  10.     return {
  11.       b: false,
  12.       a: "这是news组件的值",
  13.     };
  14.   },
  15.   methods: {
  16.       // 广播数据
  17.       
  18.   }
  19.   ,mounted(){       //在组件加载的时候就接收
  20.         VueEvent.$on("to-news", function(e){
  21.             console.log(e)
  22.         });   //接收数据
  23.   }
  24. };
  25. </script>
  26. <style>
  27. </style>
复制代码







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表