vue基础:非父子组件传值
vue基础:非父子组件传值
本文共用到四个文件:
根组件:App.vue
两个子组件:Home.vue,News.vue
js文件:eveemit.js
文章最后有所有文件
步骤:
1.新建一个js文件,引入vue并实例化,最后暴露这个实例
vueemit.js文件
import Vue from 'vue'var vueevent =new Vue()
export default vueevent;
2.在要广播的地方映入刚才定义的实例。
Home.vue向News.vue传,就要在Home.vue中广播
先引入
import vueevent from '../model/vueemit.js';
3.通过 vueevent.$emit(‘名称’,‘数据’)
methods:{ emitnews(){
vueevent.$emit('to-news',this.msg)
}
}
4.在接受的地方,监听广播
vueevent.$on(‘名称’,‘数据’)
mounted(){ vueevent.$on('to-news',function(data){
console.log(data);
})
}
效果图:
App.vue
<template> <div id="app">
<v-home/>
<v-news/>
</div>
</template>
<script>
import Home from './components/Home.vue';
import News from './components/News.vue';
export default {
data(){
return{
}
},methods:{
},components:{
'v-home':Home,
'v-news':News
}
}
</script>
<style>
</style>
Home.vue
<template> <div id="home">
我是home组件
<br>
<button @click="emitnews()">给news传值</button>
<br>
</div>
</template>
<script>
//
import vueevent from '../model/vueemit.js';
export default {
data(){
return{
msg:'我是一个home组件'
}
},methods:{
emitnews(){
vueevent.$emit('to-news',this.msg)
}
},mounted(){
vueevent.$on('to-home',function(data){
console.log(data);
})
}
}
</script>
<style>
</style>
News.vue
<template> <div id="news">
我是News组件
<br>
<button @click="eventhome()">给home传值</button>
</div>
</template>
<script>
import vueevent from '../model/vueemit.js';
export default {
data(){
return{
msg:'我是一个新闻组件'
}
},
methods:{
eventhome(){
vueevent.$emit('to-home',this.msg)
}
},
mounted(){
vueevent.$on('to-news',function(data){
console.log(data);
})
}
}
</script>
<style>
</style>
vueevent.js
import Vue from 'vue'var vueevent =new Vue()
export default vueevent;
以上是 vue基础:非父子组件传值 的全部内容, 来源链接: utcz.com/z/376016.html