1. 程式人生 > >vue2.0父子元件以及非父子元件如何通訊

vue2.0父子元件以及非父子元件如何通訊

1.父元件傳遞資料給子元件

父元件資料如何傳遞給子元件呢?可以通過props屬性來實現

父元件:

<parent>
    <child :child-msg="msg"></child>//這裡必須要用 - 代替駝峰
</parent>

data(){
    return {
        msg: [1,2,3]
    };
}

子元件通過props來接收資料:
方式1:

props: ['childMsg']

方式2 :

props: {
    childMsg: Array //這樣可以指定傳入的型別,如果型別不對,會警告
}

方式3:

props: {
    childMsg: {
        type: Array,
        default: [0,0,0] //這樣可以指定預設的值
    }
}

這樣呢,就實現了父元件向子元件傳遞資料.

2.子元件與父元件通訊

那麼,如果子元件想要改變資料呢?這在vue中是不允許的,因為vue只允許單向資料傳遞,這時候我們可以通過觸發事件來通知父元件改變資料,從而達到改變子元件資料的目的.

子元件:
<template>
    <div @click="up"></div>
</template>

methods: {
    up() {
        this.$emit('upup','hehe'); //主動觸發upup方法,'hehe'為向父元件傳遞的資料
    }
}

父元件:

<div>
    <child @upup="change" :msg="msg"></child> //監聽子元件觸發的upup事件,然後呼叫change方法
</div>
methods: {
    change(msg) {
        this.msg = msg;
    }
}

3.非父子元件通訊

如果2個元件不是父子元件那麼如何通訊呢?這時可以通過eventHub來實現通訊.
所謂eventHub就是建立一個事件中心,相當於中轉站,可以用它來傳遞事件和接收事件.

let Hub = new Vue(); //建立事件中心

元件1觸發:

<div @click="eve"></div>
methods: {
    eve() {
        Hub.$emit('change','hehe'); //Hub觸發事件
    }
}

元件2接收:

<div></div>
created() {
    Hub.$on('change', () => { //Hub接收事件
        this.msg = 'hehe';
    });
}

相關推薦

vue2.0父子元件以及父子元件如何通訊

1.父元件傳遞資料給子元件 父元件資料如何傳遞給子元件呢?可以通過props屬性來實現 父元件: <parent> <child :child-msg="msg"></child>//這裡必須要用 - 代替駝峰 </pa

vue2.0父子元件以及父子元件通訊傳參詳解

1.父元件傳遞資料給子元件 父元件資料如何傳遞給子元件呢?可以通過props屬性來實現 父元件: <parent> <child :child-msg="msg"></child>//這裡必須要用 - 代替駝峰 </p

最詳細的vue的父子元件以及父子元件之間的通訊方式

1.父元件傳遞資料給子元件父元件資料如何傳遞給子元件呢?可以通過props屬性來實現父元件://這裡必須要用 - 代替駝峰data(){ return { msg: [1,2,3] }; }子元件通過props來接收資料: 方式1:props: ['childMsg']方式2 :props: { childM

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

tty rep create pla eve 16px markup div ont 1.父組件 >>> 子組件 父組件數據如何傳遞給子組件呢?可以通過props屬性來實現 父組件: <parent> <child :child-

[js高手之路]Vue2.0基於vue-cli+webpack父子元件通訊教程

在git命令列下,執行以下命令完成環境的搭建: 1,npm install --global vue-cli  安裝vue命令列工具 2,vue init webpack vue-demo   使用vue命令生成一個webpack專案,專案名稱為vue-demo 3,c

vue2.0在頁面中自定義元件模組,以及頁面與元件之間的資料傳遞

1.在頁面上引入寫好的元件import UpdataPassword from './updataPassWord'       //updataPassWord為元件的name2.註冊元件components:{               //註冊元件  UpdataPa

[js高手之路]Vue2.0基於vue-cli+webpack同級元件之間的通訊教程

我們接著上文繼續,本文我們講解兄弟元件的通訊,專案結構還是跟上文一樣. 在src/assets目錄下建立檔案EventHandler.js,該檔案的作用在於給同級元件之間傳遞事件 EventHandler.js程式碼: 1 import Vue from 'Vue'; 2 export defau

vue2.0快取資料頁面與部分元件不快取資料頁面

轉自 https://blog.csdn.net/settingsun66/article/details/74909553keep-alive 快取所有元件。但是有些元件在我們的程式中是不想被快取下來的,就拿我現在的這個專案做比方吧。這個我是需要快取的,因為我要去選擇省份所

vue2.0中this.$refs獲取子元件屬性報undefined錯誤

首先,要強調一點,我的re被用來給子元件註冊引用資訊,引用資訊註冊在父元件的 $refs 物件上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子元件上,引用就指向元件例項: 當我呼叫下面這個語句想要改變子元件的data中的uid屬性時候 thi

VUE2.0 stylus封裝loading載入過渡元件

本文主要介紹如何封裝loading載入過渡元件,本文的樣式使用的stylus的寫法 1.在對應的公共元件目錄下,建立loading.vue(如果沒有安裝stylus,請現在package.j

深入解析React受控元件受控元件

本篇文章主要介紹了深入解析React受控元件與非受控元件,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。 我們都知道,有許多的web元件可以被使用者的交互發生改變,比如:,,或者是我現在正在使用的富文字編輯器。這些元件在日常

淺析React中的受控元件受控元件

React中的受控和非受控表單並不複雜 你可能看到過很多文章,說不應該使用setState,refs不好……這是自相矛盾的。很難理解怎樣是對的,甚至連選擇的規則都不清楚。 那我們應該怎麼解決表單這個棘手的問題呢? 畢竟表單還是某些web應用的核

react中的受控元件受控元件

剛開始react的時候就接觸到受控元件和非受控元件這個概念,然後那個時候長用的元件,比如input,select都是屬於受控元件。受控元件:<input type="text" value={this.state.value} onChange=

Vue2.0的三種常用傳值方式、父傳子、子傳父、父子元件傳值

在Vue的框架開發的專案過程中,經常會用到元件來管理不同的功能,有一些公共的元件會被提取出來。這時必然會產生一些疑問和需求?比如一個元件呼叫另一個元件作為自己的子元件,那麼我們如何進行給子元件進行傳值呢?如果是電商網站系統的開發,還會涉及到購物車的選項,這時候就會涉及到非父子元件傳值的情況。當然你也可以

vue2.0父子元件通訊

    在vue的1,0版本里,元件之間的通訊是通過$dispatch和$broadcast來進行通訊的,但是在2.0版本里面則取消上述這兩個方法,並提出了新的解決辦法。關於vue2.0的父子元件的通訊上文也有講過,現在要講的是非父子元件。     在vue官網中,官方推薦

【Vue】 vue2.0父子元件傳遞函式

學習筆記:在vue2.0中,父元件呼叫子元件時,想要將父元件中的函式體也做傳遞 1. 通過props :需要從子元件傳引數到父元件時適用 // 父元件.vue <template>

vue2.X基礎知識五之父子元件通訊

  在實際業務中,除了父子元件通訊外,還有很多非父子元件通訊的場景,非父子元件一般有兩種,兄弟元件和跨多級元件。1、中央事件匯流排(bus)處理任何元件通訊  在vue2.x中推薦使用一個空的Vue例項作為中央事件匯流排(bus),也就是一箇中介。例如:<div id=

vue2.0父子元件雙向繫結

父元件程式碼如下。這裡要注意的有: 1. 父組建使用msg向子元件傳遞資料。 2. 子附件向父附件傳送xxx訊息,父元件收到訊息後用abc方法來處理。 <template> <div> <input type="t

vue2.0父子間進行通訊

com outer ont false one () 兩個 ret 通訊 在vue中,父組件向之組件通訊使用的是props,子組件向父組件通訊使用的是$emit+事件,那非父子間的通訊呢,在官方文檔上只有寥寥數筆, 概念很模糊,這個空的vue實例應該放在哪裏呢,光放文

Vue元件--父子元件間的通訊

父子元件的通訊已經知道了,但是在實際的專案中如果需要拿到兄弟元件上的資料(非父子)那該如何是好呢? 其實Vue已經為我們提供了一套解決方案:使用中央事件匯流排;  非父子元件間的通訊,使用一個空的Vue例項來作為中央事件匯流排(就相當於中介一樣),用它來丟擲和監聽事件 &nbs