优化事件总线
This commit is contained in:
@@ -126,7 +126,8 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { defineProps, defineEmits, ref, onMounted, onUnmounted, computed, useSlots } from 'vue'
|
||||
import { defineProps, ref, onMounted, onUnmounted, computed, useSlots } from 'vue'
|
||||
import { emitEvent, EVENT_TYPES } from './eventBus.js'
|
||||
|
||||
const slots = useSlots()
|
||||
|
||||
@@ -146,7 +147,7 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['tabChange', 'tabClose', 'tabAdd', 'tabDragStart', 'tabDragMove', 'tabDragEnd', 'toggleCollapse', 'maximize', 'close', 'toggleToolbar', 'dragStart', 'dragMove', 'dragEnd'])
|
||||
// 使用事件总线替代直接emit
|
||||
|
||||
// 当前激活的标签页索引
|
||||
const activeTabIndex = ref(-1)
|
||||
@@ -173,7 +174,7 @@ const setActiveTab = (index) => {
|
||||
const slotChildren = slots.default ? slots.default() : []
|
||||
if (index >= 0 && index < slotChildren.length) {
|
||||
activeTabIndex.value = index
|
||||
emit('tabChange', { index, tab: slotChildren[index] })
|
||||
emitEvent(EVENT_TYPES.TAB_CHANGE, { index, tab: slotChildren[index] })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +188,7 @@ onMounted(() => {
|
||||
|
||||
// 关闭标签页
|
||||
const closeTab = (tabId) => {
|
||||
emit('tabClose', { id: tabId })
|
||||
emitEvent(EVENT_TYPES.TAB_CLOSE, { id: tabId })
|
||||
}
|
||||
|
||||
// 标签拖拽开始
|
||||
@@ -198,7 +199,7 @@ const onTabDragStart = (index, event) => {
|
||||
dragIndex = index
|
||||
|
||||
// 传递标签页索引和鼠标位置
|
||||
emit('tabDragStart', {
|
||||
emitEvent(EVENT_TYPES.TAB_DRAG_START, {
|
||||
clientX: event.clientX,
|
||||
clientY: event.clientY,
|
||||
tabIndex: index,
|
||||
@@ -222,7 +223,7 @@ const onTabDragMove = (event) => {
|
||||
// 防止文本选择和默认行为
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
emit('tabDragMove', {
|
||||
emitEvent(EVENT_TYPES.TAB_DRAG_MOVE, {
|
||||
clientX: event.clientX,
|
||||
clientY: event.clientY,
|
||||
tabIndex: dragIndex
|
||||
@@ -234,7 +235,7 @@ const onTabDragMove = (event) => {
|
||||
const onTabDragEnd = () => {
|
||||
if (isDragging) {
|
||||
isDragging = false
|
||||
emit('tabDragEnd', { tabIndex: dragIndex })
|
||||
emitEvent(EVENT_TYPES.TAB_DRAG_END, { tabIndex: dragIndex })
|
||||
dragIndex = -1
|
||||
|
||||
// 拖拽结束后移除事件监听器
|
||||
|
||||
Reference in New Issue
Block a user