vue中非父子组件的传值

/*非父子组件传值  1.新建一个js文件,然后引入vue,实例化vue,最后暴露这个实例  2.在要广播的地方引入刚才定义的实例  3.通过 VueEvent.$emit("名称",数据)  4.在接收数据的地方通过$on接收广播的数据       VueEvent.$on(‘名称‘,function () {

    })*/

App.vue根组件

<template>
  <div id="app">
    <v-home></v-home>
    <br>
    <hr>
    <v-news></v-news>
  </div>
</template>

<script>
  /*非父子组件传值
    1.新建一个js文件,然后引入vue,实例化vue,最后暴露这个实例
    2.在要广播的地方引入刚才定义的实例
    3.通过 VueEvent.$emit("名称",数据)
    4.在接收数据的地方通过$on接收广播的数据
         VueEvent.$on(‘名称‘,function () {

      })*/
  import Home from ‘./components/Home‘
  import News from ‘./components/News‘

  export default {
  name: ‘App‘,
  data(){
    return {

    }

  },
  methods:{

  },
  components:{
    "v-home": Home,
    "v-news": News,
  }
}
</script>

<style>

</style>

Home组件

<template>
<div id="home">
  我是首页组件
  <br>
  <button @click="emitNews()">给News组件广播数据</button>

  <br>
</div>
</template>

<script>
import VueEvent from ‘../model/VueEvent.js‘
    export default {
        name: "Home",
        data(){
          return {
            msg: ‘我是一个home组件‘

          }
        },
      mounted(){
        VueEvent.$on(‘to-home‘,function (data) {
          console.log(‘111111111‘+data)
        })
      },
      methods:{
        emitNews(){
          VueEvent.$emit("to-news",this.msg)
        }
      }

    }
</script>

<style scoped>

</style>

News.vue

<template>
  <div id="news">
    我是新闻组件
    <br>
    <button @click="toHome()">给home组件广播数据</button>
  </div>
</template>

<script>

  import VueEvent from ‘../model/VueEvent.js‘
  export default {
    name: "Header",
    data() {
      return {
        msg:‘我是新闻组件‘
      }

    },
    mounted(){
      VueEvent.$on(‘to-news‘,function (data) {
        console.log(data)
      })
    },
    methods: {
      toHome(){
        VueEvent.$emit(‘to-home‘,this.msg)
      }

    },

  }
</script>

<style scoped>

</style>

VueEvent.js

import Vue from ‘vue‘
let VueEvent = new Vue()

export default VueEvent

  整个目录结构

运行效果:

原文地址:https://www.cnblogs.com/malong1992/p/12133999.html

时间: 2024-10-08 23:20:48

vue中非父子组件的传值的相关文章

Vue.js父子组件如何传值

https://blog.csdn.net/qq_40259641/article/details/81265950 Vue.js父子组件如何传值 通俗易懂原创 阿猫阿狗哈 发布于2018-07-28 22:04:42 阅读数 14278 收藏展开父子组件传值原理图 一般页面的视图App.vue应为这样 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue2.Child.vue的中创建props,然后创建一个名为message的属性 3.在A

Vue中非父子组件传值的问题

非父子组件之间的通信,必须要有公共的实例(可以是空的),才能使用 $emit 获取 $on 的数据参数,实现组件通信 第一个组件的数据传递给第二个组件 公共实例文件bus.js,作为公共数控中央总线 import Vue from "vue"; export default new Vue(); 第一个组件 first.vue import Bus from '../bus.js'; export default { name: 'first', data () { return {

vue的父子组件间传值以及非父子间传值

Vue组件间的传值方式: 父传子 子传父 非父子间传值 1.首先父组件传值给子组件,使用bind绑定属性,然后在子组件用props接收属性值. //父组件 <template> <input type="text" /> <br/> <child :inputValue="inputValue"></child> </template> <script> import child f

vue父子组件之间传值

vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种vue-cli搭建的同理 父组件通过 v-bind:属性名(自定义的) = "要传递的数据" 子组件通过 props:["属性名"]  这个属性名就是父组件传递过来的数据信息 <div id="app"> <mod :abc=&qu

vue父子组件的传值总结

久违的博客园我又回来了.此篇文章写得是vue父子组件的传值,虽然网上已经有很多了.写此文章的目的就是记录下个人学习的一部分.接下来我们就进入主题吧! 在开发vue项目中,父子组件的传值是避免不掉的. 情况一:父组件给子组件传值方法,使用props 父页面:parent.vue 1 <template> 2 <div class="sidebar_contianer"> 3 <sidebar-item :routerData="transmitDa

非父子组件间传值(一)

非父子组件间传值有两种方法,一种是vuex共享数据,另一种是发布订阅模式/观察者模式/总线/Bus.这篇随笔主要总结总线机制的学习心得: 首先通过在Vue.prototype上挂载一个bus属性,指向vue实例:接下来在调用Vue或者创建组件时都会有bus属性. Vue.prototype.bus=new Vue() var Child={ props:['content'], data:function() { return {num:this.content} }, //因为vue是单项数据

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之父子组件之间的通信方式

(一)props与$emit <!-这部分是一个关于父子组件之间参数传递的例子--> <!--父组件传递参数到子组件是props,子组件传递参数到父组件是用事件触发$emit--> <!OCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <sccipt src="js/vue.js" t

Vue的父子组件v-model双向绑定,父组件修改子组件中绑定的v-model属性

先来看下实现的效果,父组件中有个文本框,在点击下面按钮时弹出抽屉,抽屉里也有个文本框,文本框里的初始值要和父组件的文本框同步,并且修改抽屉里的文本框值时 父组件里的文本框值也要跟着改变 网上有大概三种方法 父组件调用子组件传值,子组件通过props接收父组件传来的值,并通过emit发送方法名和值,父组件根据传来的方法名定义方法接收值并进行赋值操作. Sync  这个没试过不了解 v-model  子传父: 父组件定义v-model,子组件中当数据更新时,向父组件emit一个input事件,将更新