有的項目中,需要使用多個子組件,當需要傳遞值的時候,較為麻煩,怎樣實現呢
1,一般可以使用子組件a傳遞給父組件,再由父組件傳遞給子組件b。但是一般較為麻煩,
2,使用bus作為中介,來傳遞ab組件之間的值
首先,創建bus.js文件,一般在src目錄下,
import Vue from 'vue'; export default new Vue;
其次,在組件a中,(只是截取部分代碼,此處僅有觸發傳遞的代碼)
<el-button @click="edit(item.id)" >查看更多</el-button>
edit() 函數
引入
import Bus from "@/bus.js";
按照自己寫的路徑引入即可
edit(id){
Bus.$emit("businessId", id);
this.$router.push({ path: `/admin/editbusiness/${id}` });
console.log(id);
}
(上面代碼高亮部分是路由跳轉一種寫法,當router-link不夠方便的時候,大多數可以使用$router.push,但是$router.push也有弊端,比如下面代碼所示,因此使用上述高亮代碼可完美解決)
this.$router.push({ path: '/admin/editbusiness',query:{id:1}}); this.$router.push({ name: 'business',params:{id:1}});
b組件
首先
引入
import Bus from "@/bus.js";
創建一個函數,接收拿到的數據
getAData(val) {
console.log(val);
},
在mounted中觸發
Bus.$on("businessId", this.getAData);
以上就是父子組件之間的傳值,如有更好的方法,歡迎交流指正
