国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

詳解Vue2.0 事件派發(fā)與接收

2019-11-19 15:33:03
字體:
供稿:網(wǎng)友

由于vue2.0 移除了1.0中的$dispatch 和$broadcast 這兩個(gè)組件之間通信傳遞數(shù)據(jù)的方法 ,官方的給出的最簡(jiǎn)單的升級(jí)建議是使用集中的事件處理器,而且也明確說明了 一個(gè)空的vue實(shí)例就可以做到,因?yàn)閂ue 實(shí)例實(shí)現(xiàn)了一個(gè)事件分發(fā)接口.

請(qǐng)直接看代碼,在初始化web app的時(shí)候,給data添加一個(gè) 名字為eventhub 的空vue對(duì)象

new Vue({ el: '#app', router, render: h => h(App), data: {  eventHub: new Vue() }})

好的 這個(gè)時(shí)候 你就可以一勞永逸了,在任何組件都可以調(diào)用事件發(fā)射 接受的方法了.

如何獲取到這個(gè)空的vue對(duì)象 eventhub呢.在組件里面直接調(diào)用這個(gè)

某一個(gè)組件內(nèi)調(diào)用事件觸發(fā)

//通過this.$root.eventHub獲取此對(duì)象//調(diào)用$emit 方法this.$root.eventHub.$emit('YOUR_EVENT_NAME', yourData)

另一個(gè)組件內(nèi)調(diào)用事件接受,當(dāng)然在組件銷毀時(shí)接觸綁定,使用$off方法

this.$root.eventHub.$on('YOUR_EVENT_NAME', (yourData)=>{  handle(yourData)} )

遇到一個(gè)問題 ,考慮特定場(chǎng)景:

跳轉(zhuǎn)路由之前我們調(diào)用了$emit方法,這個(gè)方法在A組件里面處理數(shù)據(jù),但是A組件綁定$on事件之前 $emit事件已經(jīng)發(fā)射,所以這會(huì)導(dǎo)致一直接受不到消息,看來這個(gè)事件綁定有時(shí)效性問題,你可以setTimeout來做一下延時(shí),但是這個(gè)特別奇怪,那就把數(shù)據(jù)存到store然后等A組件加載完了再去取。。。。

官方文檔請(qǐng)點(diǎn)擊我

record on 12 24

在stackoverflow 發(fā)現(xiàn)一個(gè)更加簡(jiǎn)潔的方法,因?yàn)楸举|(zhì)上vue是一個(gè)js對(duì)象,我們想保存一個(gè)全局對(duì)象,只需要在Vue的prototype上面增加一個(gè)屬性即可,本質(zhì)上所有Vue組件都是繼承全局的Vue。只要在初始化Vue對(duì)象之前給原生Vue對(duì)象prototype增加屬性,那樣所有的組件(因?yàn)槎际抢^承自它的實(shí)例)都可以訪問到這個(gè)屬性。相關(guān)資料請(qǐng)參考我之前的文章關(guān)于函數(shù)的構(gòu)造函數(shù)和prototype<四>

在初始化Web app 之前 加上這樣一句:

Vue.prototype.$eventHub= Vue.prototype.$eventHub || new Vue()

當(dāng)然我們可以定義其他的全局變量.比如當(dāng)前app的系統(tǒng)配置文件,名字為sysconfig.json,你可以這樣定義

Vue.prototype.$config =Vue.prototype.$config||require('path/sysconfig.json')

這樣我們?cè)诮M件內(nèi)部 就可以直接調(diào)用$eventHub 和 $config對(duì)象了。

比如 在mounted函數(shù)里面直接 console.log($config.yourKey)

record on 1.1.2017

剛才看到了webpack的插件里面有一個(gè)definePlugin 它可以幫我們定義全局的常量。

如何使用,很簡(jiǎn)單但是更好,我們不用去修改Vue對(duì)象:

new webpack.DefinePlugin({ CONFIG: require('path/sysconfig.json')}); 

然后我們也可以在全局內(nèi)使用CONFIG對(duì)象了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德令哈市| 象山县| 徐水县| 安西县| 阿拉尔市| 酉阳| 营山县| 安康市| 资中县| 大宁县| 丹江口市| 阿坝| 朝阳县| 沐川县| 本溪市| 镇原县| 邛崃市| 石门县| 醴陵市| 霍州市| 莱西市| 德昌县| 桃园县| 南和县| 蓬莱市| 南陵县| 淅川县| 山东省| 黑河市| 绥滨县| 叙永县| 双流县| 城市| 黄陵县| 益阳市| 营山县| 绥宁县| 达孜县| 弥勒县| 偏关县| 遂昌县|