最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在 Vue.js中優(yōu)雅地使用全局事件的方法

 更新時間:2019年02月01日 08:16:44   作者:全棧工程師的自我修養(yǎng)  
這篇文章主要介紹了在 Vue.js中優(yōu)雅地使用全局事件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Vue 2.0 版本中取消了 v1 中的 $broadcast 方法,因此要使用全局事件時,不可避免地會使用到 event-bus 之類的方法,本文旨在提出一種不需要用到 event-bus 的全局事件使用方法。

主要思路是將事件全部綁定在 $root 上,并為所有全局事件添加一個前綴防止沖突,再通過向 $options 上注入新的 key 來簡化使用方式。

以下為 mixin 文件代碼

// event-mixin.js
export default {
 created() {
  if (this.$options.events) {
   Object.keys(this.$options.events).forEach(key => {
    let handler = this.$options.events[key]
    if (typeof handler === 'string') {
     handler = this[handler]
    }
    this[key + '::handler'] = handler.bind(this)
    this.$root.$on('global::' + key, this[key + '::handler'])
   })
  }
 },
 beforeDestroy() {
  if (this.$options.events) {
   Object.keys(this.$options.events).forEach(key => {
    this.$root.$off('global::' + key, this[key + '::handler'])
   })
  }
 }
}

使用前先在 main.js 中調(diào)用 mixin

Vue.mixin(require('./event-mixin.js').default)
在各個組件中,向 $root 發(fā)送事件即可

// a.vue
export default {
  name: 'a',
  events: {
    'evt.a': 'handlerA',
    'evt.b'() {
      console.log('B triggered')
    }
  },
  methods: {
    handlerA() {
      console.log('A triggered')
    }
  }
}

// b.vue
export default {
  name: 'b',
  events: {
    'evt.b'() {
      console.log('B triggered again')
    }
  }
}
// c.vue
export default {
  name: 'c',
  created() {
    this.$root.$emit('global::evt.a') // 'A triggered'
    this.$root.$emit('global::evt.b', 'data') // 'B triggered', 'B triggered again'
    // 使用以上方式觸發(fā),也可以在 mixin 中向?qū)嵗砑訉S糜|發(fā)方法
  }
}

使用這種方法,可以避免新建專門用于傳輸事件的 vue 實例,編寫回調(diào)函數(shù)時也更容易管理。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實現(xiàn)點擊某個div顯示與隱藏內(nèi)容功能實例

    vue實現(xiàn)點擊某個div顯示與隱藏內(nèi)容功能實例

    最近做項目有用到某個div顯示與隱藏內(nèi)容,所以下面這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)點擊某個div顯示與隱藏內(nèi)容功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vue圖片上傳組件使用詳解

    vue圖片上傳組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue圖片上傳組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 詳解axios在vue中的簡單配置與使用

    詳解axios在vue中的簡單配置與使用

    本篇文章主要介紹了詳解axios在vue中的簡單配置與使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Vue.js數(shù)據(jù)綁定之data屬性

    Vue.js數(shù)據(jù)綁定之data屬性

    這篇文章主要為大家詳細(xì)介紹了Vue.js數(shù)據(jù)綁定之data屬性,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • vue中require與import的區(qū)別詳解

    vue中require與import的區(qū)別詳解

    這篇文章主要介紹了vue中require與import的區(qū)別詳解,require相當(dāng)于module.exports的傳送門,module.exports后面的內(nèi)容是什么,require的結(jié)果就是什么,對象、數(shù)字、字符串、函數(shù),再把require的結(jié)果賦值給某個變量,需要的朋友可以參考下
    2023-10-10
  • Vue使用axios引起的后臺session不同操作

    Vue使用axios引起的后臺session不同操作

    這篇文章主要介紹了Vue使用axios引起的后臺session不同操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 淺談vue 多個變量同時賦相同值互相影響

    淺談vue 多個變量同時賦相同值互相影響

    這篇文章主要介紹了淺談vue 多個變量同時賦相同值互相影響,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 詳解vite2.0配置學(xué)習(xí)(typescript版本)

    詳解vite2.0配置學(xué)習(xí)(typescript版本)

    這篇文章主要介紹了詳解vite2.0配置學(xué)習(xí)(typescript版本),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • uniapp?webview和H5通信的3種方式代碼示例

    uniapp?webview和H5通信的3種方式代碼示例

    最近在研究uni-app跨端開發(fā)APP和H5的通訊和交互,比如H5調(diào)用APP的方法,APP往H5里面?zhèn)鲄?H5往app外面?zhèn)鲄?這篇文章主要給大家介紹了關(guān)于uniapp?webview和H5通信的3種方式,需要的朋友可以參考下
    2024-04-04
  • vue虛擬化列表封裝的實現(xiàn)

    vue虛擬化列表封裝的實現(xiàn)

    這篇文章主要介紹了vue實現(xiàn)虛擬化列表封裝方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

三河市| 万荣县| 高清| 天等县| 石屏县| 淮滨县| 凭祥市| 即墨市| 商水县| 方城县| 嫩江县| 新民市| 彭水| 收藏| 亚东县| 合作市| 昌平区| 大宁县| 康乐县| 赤壁市| 云林县| 黄平县| 武宣县| 富锦市| 当雄县| 长顺县| 东莞市| 化德县| 晴隆县| 鲁山县| 泾源县| 德江县| 通河县| 合阳县| 登封市| 西充县| 灌南县| 民权县| 长白| 尼木县| 房产|