【vue】父组件主动调用子组件 /// 非父子组件传值

一  父组件主动调用子组件:

注意:在父组件使用子组件的标签上注入ref属性,例如:

<div id="home">
<v-header ref="header"></v-header>
<hr>
首页组件
<button @click="getChildData()">获取子组件的数据和方法</button>
</div>
父组件主动获取子组件的数据和方法:

    1.调用子组件的时候定义一个ref

        <v-header ref="header"></v-header>

    2.在父组件里面通过

        this.$refs.header.属性

        this.$refs.header.方法

二 非父子组件传值

注意:非父子组件传值,但两个组件必须被在一个页面中使用了。例如 home组件和news组件互相传值:

<template>

  <div id="app"> 

     <v-home></v-home>

    <br>

    <v-news></v-news>
  </div>
</template>

(1)创建vue实例

import Vue from ‘vue‘;

var VueEvent = new Vue()

export default VueEvent;

(2)$emit $on

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

</template>

<script>
//引入 vue实例
    import VueEvent from ‘../model/VueEvent.js‘;
    export default{
        data(){
            return {
               msg:‘我是一个新闻组件‘
            }
        },
        methods:{
            emitHome(){
                //广播
                VueEvent.$emit(‘to-home‘,this.msg)
            }
        },
        mounted(){
            VueEvent.$on(‘to-news‘,function(data){
                console.log(data);
            })
        }
    }
</script>
<template>
    <!-- 所有的内容要被根节点包含起来 -->
    <div id="home">
       我是首页组件
       <br>
       <button @click="emitNews()">给News组件广播数据</button>
        <br>
    </div>
</template>

<script>

//引入 vue实例
    import VueEvent from ‘../model/VueEvent.js‘;

    export default{
        data(){
            return {
               msg:‘我是一个home组件‘,
               title:‘首页111‘
            }
        },methods:{
            emitNews(){
                //广播数据
                VueEvent.$emit(‘to-news‘,this.msg)
            }
        },
        mounted(){
            //监听news 广播的数据
            VueEvent.$on(‘to-home‘,function(data){
                console.log(data);
            })
        }
    }

</script>

<style lang="scss" scoped>

</style>

原文地址:https://www.cnblogs.com/dongzhuangdian/p/9484876.html

时间: 2024-09-30 06:33:27

【vue】父组件主动调用子组件 /// 非父子组件传值的相关文章

vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例

vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发和监听来实现组件之间的通信和参数传递. 首先需要在任意地方添加一个bus.js 在bus.js里面 写入下面信息 1 import Vue from 'vue' 2 export default new Vue; 在需要通信的组件都引入B

Vue bus的使用(兄弟|非父子组件传值)--&gt;可以使用一个空的Vue实例作为中央事件总线new Vue()

1.在main.js中注册全局的bus  Vue.prototype.bus=new Vue(); 2.在组建中使用 子组建使用:this.bus.$emit('自定义事件名',data) methods:{        handleClicks(){        this.bus.$emit('openMenu',true)       } } 父组建使用:  this.bus.$on("自定义事件名", msg => {}) mounted() {    this.bus

12.父组件主动获取子组件的数据和方法

父组件主动获取子组件的数据和方法 1.父组件Home.vue <template> <div> <h2>{{msg}}</h2> <!-- 1.调用子组件的时候调用一个ref --> <!-- 2.在父组件中通过this.$refs.header.数据 this.$refs.header.方法 调用子组件的数据和方法 --> <!-- 注意,第一步是ref,第二步是refs --> <v-header ref=&qu

Vue2.0的三种常用传值方式、父传子、子传父、非父子组件传值

Vue常用的三种传值方式有: 父传子 子传父 非父子传值 引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递.父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息 1. 父组件向子组件进行传值 父组件: <template> <div> 父组件: <input type="text" v-model="name"> <!-- 引入子组件 --> <child :abc=

父子,子父,非父子组件通信

父子组件通信 父亲的数据给子集 父组件向子组件传值 ??? 子组件在props中创建一个属性,用于接收父组件传过来的值: ??? 父组件 引入子组件-->注册子组件-->引用子组件: ??? 在子组件标签中添加子组件props中创建的属性: ??? 将所要传递的值赋值给该属性. props: prop类型:通常你希望每个prop都有指定的数据类型,你可以以对象的形式列出prop,对象的属性的名称和值分别对应了prop的值和类型. 单向数据流:所有的prop都使得其父子prop形成一个单向数据流

Vue父子组件及非父子组件如何通信

1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: 子组件通过props来接收数据: 方式1: 方式2 : 方式3: 这样呢,就实现了父组件向子组件传递数据. 2.子组件与父组件通信 那么,如果子组件想要改变数据呢?这在vue中是不允许的,因为vue只允许单向数据传递,这时候我们可以通过触发事件来通知父组件改变数据,从而达到改变子组件数据的目的. 父组件: 3.非父子组件通信 如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现

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

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

vue2.0父子组件以及非父子组件如何通信

1.父组件 >>> 子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg"></child> //这里必须要用 - 代替驼峰 </parent> data(){ return { msg: [1,2,3] }; } 子组件通过props来接收数据: 方式1: props: ['childMsg'] 方式2 : props: { chi

非父子组件间传值(一)

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