Vue組件通信

  • 1) 父組件給子組件傳值

利用Vue的組件機(jī)制缕贡,父親組件通過 v-bind指令給子組件綁定一個(gè)屬性,屬性值為父組件要傳遞的數(shù)據(jù)(變量也可以)拔第,若父親組件中對(duì)應(yīng)的數(shù)據(jù)改變崭倘,子組件中同樣會(huì)改變。

傳遞 父親組件給子組件綁定一個(gè)屬性:如下圖

//傳遞 messageFromParent這個(gè)變量悦析。
<child v-bind:msg="messageFromParent"></child>
//傳遞一個(gè)常量寿桨。
<child v-bind:msg="'我是個(gè)常量'"></child>

子組件接收 父親組件給子組件綁定一個(gè)屬性:如下圖

props 是父組件用來傳遞數(shù)據(jù)的一個(gè)自定義屬性,這里定義組件要接收的屬性及屬性的校驗(yàn)(關(guān)于屬性校驗(yàn)請(qǐng)自行看官方的文檔)

Vue.component('child',{
    props:['msg'],
});

相關(guān)示例代碼

<template id="parent">
  <div>
    <h1>我是父親節(jié)點(diǎn)</h1>
    <child v-bind:msg="messageFromParent"></child>
    <button @click='changeMsg'>點(diǎn)我改變消息內(nèi)容强戴,子組件內(nèi)信息同時(shí)會(huì)改變</button>
  </div>
</template>
<template id="child">
  <div>
    <h2>{{msg}}</h2>
  </div>
</template>

//子組件
Vue.component('child',{
    props:['msg'],
    template:"#child"
});
//父親組件
Vue.component('parent',{
data(){
  return {
    messageFromParent:"我是從父親來的文字"
  }
},
template:'#parent',
methods:{
    changeMsg:function(){
        this.messageFromParent="傳遞過來的數(shù)據(jù)改變咯";
    }
}
});
//建立vue實(shí)例
var vm=new Vue({
  el:"#app",
  data:{

  }
});
  • 2) 子組件給父親組件傳值
<div id='app'>
  <parent></parent>
</div>

<template id="parent">
  <div>
    <h1>我是父親節(jié)點(diǎn)</h1>
    <h3>傳遞的信息顯示在這:{{message}}</h3>
    <!-- 給子組件綁定一個(gè)自定義事件 diyevname 指定 事件處理函數(shù)為 changeMsg-->
    <child @diyevname="changeMsg"></child>
  </div>
</template>

<template id="child">
  <div>
    <button @click='sendMsg'>點(diǎn)我給父親組件傳值</button>
  </div>
</template>
//子組件
Vue.component('child',{
    template:"#child",
    methods: {
      sendMsg() {
        //發(fā)送信息
        this.$emit('diyevname','子組件發(fā)過來的信息');
      }
    }
});
//父親組件
Vue.component('parent',{
data(){
  return {
    message:"我是初始消息"
  }
},
template:'#parent',
methods:{
    changeMsg(newmsg){
        this.message=newmsg;
    }
}
});
//建立vue實(shí)例
var vm=new Vue({
  el:"#app",
  data:{}
});

  • 3) 非父子關(guān)系組件通信

原理:通過 事件中心 去注冊(cè)事件監(jiān)聽及事件的觸發(fā)亭螟。因?yàn)槊總€(gè) Vue 實(shí)例都實(shí)現(xiàn)了事件接口(Events interface),通過這個(gè)可以實(shí)現(xiàn)事件的監(jiān)聽及觸發(fā)骑歹。

  • vue 代碼
//新建事件中心
var EVENT=new Vue();
//全局組件A
Vue.component('p-a',{
template:'<div  class="component"><p>我是A組件</p><button @click="add">點(diǎn)我向B組件發(fā)送信息</button></div>',
methods:{
  add(){
    //通過事件中心觸發(fā)事件
    EVENT.$emit('add',
    {
      id:21,
      content:"花果山水簾洞111111",
      time:'2016-12-13  12:14:56'
    });
  }
}
});
//全局組件B
Vue.component('p-b',{
data(){
  return {
    msg:'我未接收到事件呢'
  }
},
template:"<div class='component'><p>我是B組件预烙,我負(fù)責(zé)接收事件</p>{{msg}}</div>",
created(){
    var _self=this;
    //創(chuàng)建組件之后監(jiān)聽事件
    EVENT.$on('add',function(data){
      _self.msg="我接收到事件了,事件參數(shù)"+JSON.stringify(data);
    });
}
});

//掛載vue viewModel到DOM =>相當(dāng)于 ng-app
 var vm=new Vue({
    el:"#app",
    data:{
        msgs:[],
        title:'首頁'
    }
 });
  • Html
<div id="app">
  <p-a></p-a>
  <p-b></p-b>
</div>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末道媚,一起剝皮案震驚了整個(gè)濱河市扁掸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌最域,老刑警劉巖谴分,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镀脂,居然都是意外死亡牺蹄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門薄翅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沙兰,“玉大人,你說我怎么就攤上這事翘魄《μ欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵暑竟,是天一觀的道長斋射。 經(jīng)常有香客問我,道長光羞,這世上最難降的妖魔是什么绩鸣? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任怀大,我火速辦了婚禮纱兑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘化借。我一直安慰自己潜慎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铐炫,像睡著了一般垒手。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倒信,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天科贬,我揣著相機(jī)與錄音,去河邊找鬼鳖悠。 笑死榜掌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乘综。 我是一名探鬼主播憎账,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卡辰!你這毒婦竟也來了胞皱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤九妈,失蹤者是張志新(化名)和其女友劉穎反砌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萌朱,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡于颖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嚷兔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片森渐。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冒晰,靈堂內(nèi)的尸體忽然破棺而出同衣,到底是詐尸還是另有隱情,我是刑警寧澤壶运,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布耐齐,位于F島的核電站,受9級(jí)特大地震影響蒋情,放射性物質(zhì)發(fā)生泄漏埠况。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一棵癣、第九天 我趴在偏房一處隱蔽的房頂上張望辕翰。 院中可真熱鬧,春花似錦狈谊、人聲如沸喜命。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壁榕。三九已至矛紫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間牌里,已是汗流浹背颊咬。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牡辽,地道東北人贪染。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像催享,于是被迫代替她去往敵國和親杭隙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 組件通信各種情況總結(jié)VUE是以數(shù)據(jù)驅(qū)動(dòng)的MVVM框架因妙,又是模塊化開發(fā)痰憎,所以各個(gè)組件間的通信傳遞數(shù)據(jù)非常重要,在項(xiàng)目...
    流年_338f閱讀 578評(píng)論 0 2
  • Vue自帶的通信方式非常郁悶攀涵,只能自上而下的進(jìn)行數(shù)據(jù)綁定铣耘。一旦要反向通信或者廣播通信就要用到Vuex或者其它插件。...
    夏妖士心閱讀 1,531評(píng)論 0 8
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容以故,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容蜗细。關(guān)于...
    云之外閱讀 5,050評(píng)論 0 29
  • vue 組件通信分為父組件與子組件通信炉媒、子組件與父組件通信、非父子關(guān)系組件通信三種 第一種大家都知道用props昆烁,...
    lyn911閱讀 2,196評(píng)論 0 0
  • 很多年前静尼,我有個(gè)身材像青辣椒的朋友(如果我像青椒的話)白粉。我們?cè)谕婚g大房子里工作,雖然房子又被分成了很多小隔間鼠渺。有...
    阿拉斯加雪橇閱讀 706評(píng)論 2 1