1. 程式人生 > >Vue元件間的通訊

Vue元件間的通訊

前言:本文主要介紹在Vue中元件與元件如何進行資訊傳遞。分為三部分:

父元件向子元件

子元件向父元件

非父子元件通訊

一、父元件向子元件通訊(props)

①、父元件向子元件傳遞字串

<template>
    <div id="m-dialog">
        <!-- 
        該種方法“只能傳遞字串”,
        將child的data中的value = "str";不需要父元件data中有資料
        -->
        <child value="傳遞固定字串"></child>
    </div>
</template>
Vue.component("child", {
	// 獲取value的依賴
	props:["value"],
	template: '<span>{{ value }}</span>'
});
new Vue({
	// 這裡的el可視為父元件
	// 所以下面這個片段是放在#m-dialog裡面的
	el:"#m-dialog"
});

②、父元件向子元件傳遞資料
<div id="m-dialog">
<!-- 
將元件的資料state與父元件的資料flag繫結在了一起
執行 vue1.flag= false 會對元件資料進行重新渲染
 -->
	<child v-bind:state="flag"></child>
</div>
Vue.component("child", {
	// 獲取value的依賴
	props:["state"],
	template: '<span>{{ state }}</span>'
});
var vue1 = new Vue({
	// 這裡的el可視為父元件
	// 所以下面這個片段是放在#m-dialog裡面的
	el:"#m-dialog",
	data: {
		flag: true
	}
});
使用props傳遞值的時候可能有多個引數,這時候需要注意順序問題

詳情請點選

二、子元件向父元件通訊($emit())
因為父子元件的資料繫結是單向,故子元件的資料變化不會影響到父元件,故需要通過事件的監聽來主動通知父元件對應子元件的資料變化
<div id="m-dialog">
<!-- 
v-on:cancle="other"表示如果觸發元件中的cancle事件
則連帶觸發父元件中的other時間
 -->
	<child v-on:cancle="other"></child>
</div>
Vue.component("child", {
	template: '<button v-on:click="cancle">我是按鈕,點我觸發父元件事件</button>',
	methods: {
		cancle: function() {
			// 與父元件通訊一定要加上這句話
			this.$emit('cancle');
		}
	}
});
var vue1 = new Vue({
	// 這裡的el可視為父元件
	// 所以下面這個片段是放在#m-dialog裡面的
	el:"#m-dialog",
	data: {
		flag: true
	},
	methods: {
		other: function() {
			alert();
		}
	}
});

三、非父子元件通訊

// 建立一個空容器
var bus = new Vue()

// 在元件 B 建立的鉤子中監聽事件
// $on用於監聽事件
bus.$on('event', function (id1,id2) {
  // ...
  alert(a);// 彈出1
  alert(a);// 彈出2
})

// 觸發元件 A 中的事件
// 觸發了event事件, 後面為引數
bus.$emit('event', 1, 2);
如果是比較龐大的元件間通訊可以使用vuex,我個人建議不要為了用 Vuex 而用 Vuex,除非你的專案很大,耦合度很高,需要大量的儲存一些 data,元件之間通訊頻繁。當然還是要根據自己的業務場景的來決定,總之還是那句話,不要為了用 Vuex 而用 Vuex 友情推薦:Vue 進階教程之:非父子元件通訊方法(非Vuex) 傳送門

瞎談:剛接觸vue,學習的東西很多,如有錯誤,敬請提醒,共同進步~~

相關推薦

vue - 元件通訊2

父元件--> 子元件 1. 屬性設定 父元件關鍵程式碼如下: <template> <Child :child-msg="msg"></Child> </template> 子元件關鍵程式碼如下: export de

vue-元件通訊

1、在vue中父元件是通過props傳遞資料給子元件 <child-component :prop1="父元件的資料1" :prop2="父元件的資料2"></child-component> 子元件只接受在子元件中定義過的props的值, V

vue 元件通訊 PubSub 釋出訂閱

很長一段時間在vue開發專案中元件間通訊都是通過vuex實現的,有時候開發一個小專案也要用到插入笨重的vuex來實現元件間互動,有沒有一個好的外掛可以替代vuex,emmmm~,當然有了!今天給大家介紹一下PubSubJS,PubSubJS是什麼?可以實現什麼功能?看下面的例子實現關閉彈窗m

vue元件通訊用例

父元件傳值給子元件 -- 以封裝公用slide元件為例 父元件 <template> <section class="banner"> <slide :imgList="imgList" :options="swiperOption" width="100%" h

Vue元件通訊2--Vue自定義事件

自定義事件方式一(常用) 1、給TodoHeader標籤物件繫結addTodo事件監聽 2、觸發自定義事件:addTodo  自定義事件方式二 1、給<TodoHeader>繫結addTodo事件監聽 2、觸發自定義事件:addTodo

vue元件通訊

隨著vue等框架盛行,元件開發已然成為一種趨勢,元件開發中我們經常遇到的就是父子元件通訊了。下面簡單介紹下vue中父子元件如何通訊: 一、使用props傳遞資料 元件例項的作用域是孤立的。這意味著不能 (也不應該) 在子元件的模板內直接引用父元件的資料。

Vue元件通訊4--訊息訂閱與釋出

安裝pubsub-js npm install pubsub-js --save 優點:可以進行任意元件間的資訊傳遞。 1、釋出訊息   PubSub.publish('msg', data) 下面的例子中,msg為‘type’ , data為communicate

Vue元件通訊6種方式

摘要: 總有一款合適的通訊方式。 作者:浪裡行舟 Fundebug經授權轉載,版權歸原作者所有。 前言 元件是 vue.js

Vue元件通訊-Vuex

  上回說到Vue元件間通訊,最後留了一個彩蛋~~~Vuex。Vuex是另一種元件通訊的方法,這節來說說Vuex(store倉庫)。    首先Vuex需要安裝,安裝的方式有很多,在這裡就不一一細說了。我是通過npm方式安裝的: npm install vuex --save 安裝好之後需要再m

2018年11月08日 關於Vue的父子通訊 and 子父通訊 and 任意及平行元件通訊的學習

1、父子通訊 //在html中的相關程式碼 <body> <div id="app"> <alert change_alert="再見"></alert> //如果我們想要點選按鈕的時候彈出的內容時change_alert中的“再

Vue.js元件通訊方式總結

  平時在使用Vue框架的業務開發中,元件不僅僅要把模板的內容進行復用,更重要的是元件之間要進行通訊。元件之間通訊分為三種:父-子;子-父;跨級元件通訊。下面,就元件間如何通訊做一些總結。 1.父元件到子元件通過props通訊 在元件中,使用選項props來宣告需要從父級元件接受的資料,props的值可以

聊聊Vue.js元件通訊的幾種姿勢

寫在前面 因為對Vue.js很感興趣,而且平時工作的技術棧也是Vue.js,這幾個月花了些時間研究學習了一下Vue.js原始碼,並做了總結與輸出。 文章的原地址:https://github.com/answershuto/learnVue。 在學習過程中,為Vue加上了中文的註釋htt

Vue之父子元件通訊例項講解(props、$ref、$emit)

元件是 vue.js 最強大的功能之一,而元件例項的作用域是相互獨立的,這就意味著不同元件之間的資料無法相互引用。那麼元件間如何通訊,也就成為了vue中重點知識了。這篇文章將會通過props、$ref和 $emit 這幾個知識點,來講解如何實現父子元件間通訊。   在說如何實現通訊

說說在 Vue.js 中如何實現元件通訊

1 用法 假設父元件的模板包含子元件,我們可以通過 props 來正向地把資料從父元件傳遞給子元件。props 可以是字串陣列,也可以是物件。 html: <div id="app"> <deniro-component message=""嫦娥四號"成功發射

說說在 Vue.js 中如何實現元件通訊(高階篇)

之前說過,可以使用 props 將資料從父元件傳遞給子元件。其實還有其它種的通訊方式,下面我們一一娓娓道來。 1 自定義事件 通過自定義事件,我們可以把資料從子元件傳輸回父元件。子元件通過 $emit() 來觸發事件,而父元件通過 $on() 來監聽事件,這是典型的觀察者模式。 htm

vue實現父子元件、兄弟元件通訊

父傳子 父元件(app.vue) <template> <div id="app"> <hello-world :person="user"><

vue父子元件通訊

父元件向子元件通訊 原理: 父元件data中存在一屬性,子元件通過props接收,父元件動態繫結該資料。 子元件程式碼: <template> <div class="child"> <button>減一</button>

Vue元件通訊

前言:本文主要介紹在Vue中元件與元件如何進行資訊傳遞。分為三部分: 父元件向子元件 子元件向父元件 非父子元件通訊 一、父元件向子元件通訊(props) ①、父元件向子元件傳遞字串 <template> <div id="m-dialog"&g

Vue元件元件通訊

元件的用法 註冊之後才能使用,註冊分區域性註冊和全域性註冊 元件和Vue例項類似,基本可以使用其所有內容(data,computed,methods,filters,watch) 與Vue例項不同,data是函式,輸入需要return 全

vue倉庫、元件通訊、前後臺數據互動、前端儲存資料大彙總

目錄 路由重定向 倉庫介紹 vuex外掛:可以完成任意元件間資訊互動(移動端) 前端儲存資料大彙總 前後臺互動方式(重點) 前後臺數據互動 axios外掛:完成