Vue2 EventBus事件总线 | 实现组件间的通信&改变大屏背景颜色实践
Posted LyCat_00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue2 EventBus事件总线 | 实现组件间的通信&改变大屏背景颜色实践相关的知识,希望对你有一定的参考价值。
效果:
创建实例
在src/utils/
下新建event-bus.js
:
/**
* 事件总线
*/
import Vue from 'vue'
export const EventBus = new Vue()
子组件 screen.vue:
<template>
<a-form class="dark" layout="horizontal" :label-col="span: 6" :wrapper-col="span: 14, offset: 1">
<a-form-item label="背景颜色" class="bg-color-input">
<a-input
v-model="color"
class="bg-color-value"
value="#263546"
@pressEnter="enterChange"
@change="changeColor"
/>
<el-color-picker
v-model="color"
class="color-picker"
size="small"
:predefine="predefineColors"
@change="changeColor"
/>
<img src="@/assets/images/color_icon.png" alt="" class="color-icon">
</a-form-item>
<a-form>
</template>
<script>
export default
data()
return
loading: false,
imageUrl: '',
customStyle: 'background: #212528;border-radius:0;border: 0;overflow: hidden',
// 背景选择器预定义颜色
color: '#2F5887',
predefineColors: [
'#1e90ff',
'#00ced1',
'#90ee90',
'#ffd700',
'#ff8c00',
'#ff4500',
'#B81313'
],
,
methods:
// 更改背景颜色
changeColor(color)
console.log(color)
EventBus.$emit('changeColor',color) // -- 通过事件总线进行通信
,
enterChange()
this.color = value
EventBus.$emit('changeColor',this.color)
,
</script>
父组件index.vue:
<template>
<a-layout class="data-view-main">
<a-layout-sider
v-model="optionCollapsed"
class="data-view-option-panel"
width="400"
collapsed-width="0"
:reverse-arrow="true"
collapsible="true"
>
<v-screen
@changecolor="changeColor"
>
</v-screen>
</a-layout-sider>
</template>
<script>
import VScreen from '@/views/screen-editor/screen-edit/screen'
import EventBus from "@/utils/event-bus";
export default
name: 'Index',
components:
VScreen,
,
data()
return
backgroundColor: '',
,
// 挂载时监听
mounted()
EventBus.$on('changeColor',(color) =>
this.backgroundColor = color
)
,
methods:
</script>
<style lang="less">
</style>
以上是关于Vue2 EventBus事件总线 | 实现组件间的通信&改变大屏背景颜色实践的主要内容,如果未能解决你的问题,请参考以下文章
Vue事件总线(eventBus)$on()会多次触发解决办法