zoukankan      html  css  js  c++  java
  • 14.非父子组件之间传值

    非父子组件之间传值

    1.在src/model目录下新建VueEvent.js文件

    import Vue from "vue";
    
    var VueEvent=new Vue()
    
    export default VueEvent;

    2.在src/components目录下新建组件Home.vue和News.vue

    Home.vue

    <template>
        <div>
            <h2>{{msg}}</h2>
            <br>
            <button @click="emitNews()">给News组件广播数据</button>
            <br>
        </div>
    </template>
    <script>
    import VueEvent from "../model/VueEvent.js"
    export default {
      name: 'home',  
      data () {
        return {
            msg:'首页组件'
        }
      },
      methods:{
        // 广播数据
        emitNews(){
          VueEvent.$emit('to-news',this.msg)
        }
      },
      components:{
      }
    }
    </script>
    <style lang="scss" scoped>
    h2{
        color: red;
    }
    </style>

     News.vue

    <template>
        <div>
            <h2>{{msg}}</h2>
        </div>
    </template>
    <script>
    import VueEvent from "../model/VueEvent.js"
    export default {
      name: 'home',  
      data () {
        return {
            msg:'新闻组件'
        }
      },
      methods:{
        
      },
      components:{
      },
      mounted(){
          VueEvent.$on('to-news',function(data){
              console.log(data)
          })
      }
    }
    </script>
    <style lang="scss" scoped>
    h2{
        color: red;
    }
    </style>

    3.在App.vue中

    <template>
      <div id="app">
        <h2>{{msg}}</h2>
        <v-home></v-home>
        <br>
        <hr>
        <v-news></v-news>
      </div>
    </template>
    <script>
    // 非父子组件之间传值
    // 1.新建一个js文件,然后引入vue,实例化vue,最后暴露这个实例
    // 2.在要广播的地方引入刚才暴露的实例
    // 3.通过VueEvent.$emit('名称','数据')
    // 4.在接收数据的地方,通过VueEvent.$on('名称',function('数据'){})
    
    import Home from './components/Home.vue';
    import News from './components/News.vue';
    
    export default {
      name: 'app',
      data () {
        return { 
          msg:'根组件'
        }
      },
      methods:{
      },
      components:{
        'v-home':Home,
        'v-news':News
      }
    
    }
    </script>
    <style>
    
    </style>
  • 相关阅读:
    Ckeditor(4.5.5) language 语言切换
    利用array_slice进行手动分页
    PHP API 接口访问之签名验证
    mysql外键的一些总结
    缺货置顶功能(类似功能可参考)
    [Exchange2013] 无法正常发送存入草稿箱 或者 只能发不能收
    [Exchange]2个不同域之间互发邮件
    [Citrix NetScaler] 简述
    [转载] cookie、JS记录及跳转到页面原来的位置
    [XenServer] XenServer修改IP 以及 root密码
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/11696164.html
Copyright © 2011-2022 走看看