真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解Vue組件之間的數(shù)據(jù)通信實(shí)例

最近在用vue做項(xiàng)目,學(xué)習(xí)了不少東西,但是有時(shí)候光顧著做項(xiàng)目卻忘記要找個(gè)時(shí)間來(lái)整理一下最近的一些學(xué)習(xí)新得,因?yàn)槭切率郑钥赡軙?huì)有錯(cuò)誤的地方,歡迎指出和交流呀~~~

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供網(wǎng)站制作、成都網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

關(guān)于父子組件以及非父子組件之間的數(shù)據(jù)通信

詳解Vue組件之間的數(shù)據(jù)通信實(shí)例

1 父子組件之間數(shù)據(jù)通信

一般父組件向子組件傳遞數(shù)據(jù)用prop進(jìn)行傳遞,注意,子組件不能對(duì)prop中的數(shù)據(jù)進(jìn)行更改,vue中規(guī)定是防止子組件對(duì)父組件中的數(shù)據(jù)進(jìn)行竄改。而子組件向父組件進(jìn)行數(shù)據(jù)傳遞則可以通過(guò)事件觸發(fā)父組件的事件來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳遞。(是不是有點(diǎn)懵逼了,看個(gè)例子吧 )

(這里我就直接摘取一段項(xiàng)目中的例子代碼來(lái)說(shuō)明)

使用prop進(jìn)行數(shù)據(jù)傳遞:

//這是父組件中的部分代碼,父組件向子組件傳遞數(shù)據(jù)(method,dialogFormvisible)
 // 父組件的部分代碼

   
新增員工
// 父組件的script代碼 export default { data () { return { method:{handle: 'add‘, title: '增加員工'} dialogFormvisible: false } } } // 子組件中則需要加prop屬性數(shù)據(jù) ,如下所示: export default { props: [ 'method', 'dialogFormVisible'] } //所以只要父組件中的數(shù)據(jù)變化修改,子組件中的數(shù)據(jù)也會(huì)跟這修改;

在chrome中用vue-devtool其實(shí)也可以看到相關(guān)的數(shù)據(jù)屬性;

詳解Vue組件之間的數(shù)據(jù)通信實(shí)例

當(dāng)然,子組件做完相關(guān)操作之后,需要時(shí)間的是將屬性值dialogFormVisible重新修改為false。若是直接在子組件進(jìn)行修改的話,就會(huì)報(bào)錯(cuò),因?yàn)闀?huì)影響到父組件的數(shù)據(jù),vue中規(guī)定不能直接對(duì)prop的屬性值進(jìn)行修改。那么就可以用事件觸發(fā)來(lái)實(shí)現(xiàn)子組件向父組件傳遞數(shù)據(jù)了。

詳解Vue組件之間的數(shù)據(jù)通信實(shí)例

///父組件監(jiān)聽(tīng)子組件的事件,通過(guò)@close="closeDialog"和@getEmployee="getEmployee"來(lái)實(shí)現(xiàn)監(jiān)聽(tīng);
一旦子組件中的事件close和getEmployee發(fā)生之后,就會(huì)觸發(fā)父組件中的事件closeDialog和getEmployee事件。
// 父組件的部分代碼
新增員工
//子組件中的事件分發(fā) export default { methods: { // 關(guān)閉彈出框 closeDialog () { this.$emit('close', false) //這里就是直接觸發(fā)子組件的close事件,一旦這個(gè)執(zhí)行,父組件中的對(duì)應(yīng)方法就會(huì)執(zhí)行。 } } } // 當(dāng)那邊觸發(fā)關(guān)閉事件的時(shí)候,這邊的顯示值就要關(guān)閉,那邊會(huì)傳過(guò)來(lái)一個(gè)false // 父組件的事件 export default { methods: { // 當(dāng)那邊觸發(fā)關(guān)閉事件的時(shí)候,這邊的顯示值就要關(guān)閉,那邊會(huì)傳過(guò)來(lái)一個(gè)false closeDialog (val) { this.dialogFormVisible = val } } }

這樣就實(shí)現(xiàn)了父子組件之間的數(shù)據(jù)傳遞;

2 實(shí)現(xiàn)非父子組件之間的數(shù)據(jù)傳遞

通過(guò)建立中間的事件bus總線。實(shí)現(xiàn)非父子組件之間的數(shù)據(jù)通信。

  1. 首先建立事件bus,我會(huì)新建一個(gè)bus.js文件;注冊(cè)bus。
  2. 分別在組件中使用emit和on實(shí)現(xiàn)數(shù)據(jù)之間的通信;

1 bus.js文件

//bus.js,注冊(cè)Bus
import Vue from 'vue'
export default new Vue()

2 組件emit觸發(fā)事件