溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue.js單文件組件中非父子組件的傳值實例

發布時間:2020-09-20 07:51:09 來源:腳本之家 閱讀:165 作者:炎炎烈日放煙花 欄目:web開發

最近在研究vue.js,總體來說還算可以,但是在web開發群里有一些人問在單文件組件開發模式中非父子組件如何傳值的問題,今天在這里講講,希望對大家有所幫助!

在官網api中的這段講解很少,也很模糊;官網中說明如下:

非父子組件通信:

有時候兩個組件也需要通信 (非父子關系)。在簡單的場景下,可以使用一個空的 Vue 實例作為中央事件總線:

var bus = new Vue();
// 觸發組件 A 中的事件
bus.$emit('id-selected', 1)
// 在組件 B 創建的鉤子中監聽事件
bus.$on('id-selected', function (id) {
 // ...
})

那么這一段在單文件組件開發模式中具體怎么用呢?

首先在main.js中加入data,如下:

new Vue({
 el: '#app',
 router,
 template: '<App/>',
 components: { App },
 data:{
 bus:new Vue()
 }
})

如何獲取到這個空的vue對象 bus呢.在組件里面直接調用這個this.$root

<template>
 <div class="title" @click="change(msg)">{{ msg }}</div>
</template>
<script>
 export default {
 name: 'first',
 data() {
  return {
  msg: '我是首頁'
  }
 },
 methods: {
  change(text) {
  this.$root.bus.$emit("hehe", text)
  }
 }
 }

</script>

然后在另一個組件內調用on事件接收,當然在組件銷毀時解除綁定,使用on事件接收,當然在組件銷毀時解除綁定,使用off方法

<template>
 <h2>{{ msg }}</h2>
</template>
<script>
 export default {
 name: 'second',
 data() {
  return {
  msg: '我是第二頁'
  }
 },
 created() {
  let that = this;
  this.$root.bus.$on("hehe", function (t) {
  that.msg = that.msg + t
  })
 }
 }

</script>

然后點擊的時候就能傳遞值了,還等什么,快來試試吧!

以上這篇vue.js單文件組件中非父子組件的傳值實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女