From da373bc72ebd71e87ae0bb11eaa79b1e56931d2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E8=82=96=E7=A3=8A?= <18851179580@163.com> Date: Thu, 12 Feb 2026 09:55:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8B=E6=8B=89=E6=A1=86?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/video/components/comment-info.vue | 40 +++++------- pages/plugins/video/detail/detail.vue | 63 ++++++++++++++++++- 2 files changed, 75 insertions(+), 28 deletions(-) diff --git a/pages/plugins/video/components/comment-info.vue b/pages/plugins/video/components/comment-info.vue index f57d3d0b..7be1cde1 100644 --- a/pages/plugins/video/components/comment-info.vue +++ b/pages/plugins/video/components/comment-info.vue @@ -54,11 +54,15 @@ propReplyContent: { type: String, default: '回复' + }, + // 新增props:控制下拉菜单显示状态 + propDropDownVisible: { + type: Boolean, + default: false } }, data() { return { - drop_down_visible: false, // 下拉菜单选项数据 dropdownOptions: [ { label: '删除', type: 'delete' }, @@ -66,6 +70,12 @@ ] }; }, + computed: { + // 使用computed属性映射props状态 + drop_down_visible() { + return this.propDropDownVisible; + } + }, methods: { // 回复 comment_reply(e) { @@ -84,41 +94,21 @@ }, // 切换下拉菜单 toggle_dropdown() { - this.drop_down_visible = !this.drop_down_visible; - - // 管理全局点击监听器 - if (this.drop_down_visible) { - // 延时添加,确保元素已渲染 - setTimeout(() => { - uni.$on('global-click', this.handle_global_click); - }, 100); - } else { - uni.$off('global-click', this.handle_global_click); - } - }, - // 处理全局点击 - handle_global_click() { - if (this.drop_down_visible) { - this.drop_down_visible = false; - uni.$off('global-click', this.handle_global_click); - } + // 通知父组件切换当前组件的下拉菜单状态 + this.$emit('toggle-dropdown', this.propId); }, // 处理下拉菜单项点击 handle_dropdown_item_click(e) { const item = e.currentTarget.dataset.value || {}; console.log('点击:', item.label); uni.showToast({ title: item.label, icon: 'none' }); - this.drop_down_visible = false; - uni.$off('global-click', this.handle_global_click); + // 通知父组件关闭下拉菜单 + this.$emit('close-dropdown', this.propId); this.$emit('dropdown-item-click', { command: item.command, label: item.label }); } }, mounted() { console.log('CommentInfo 组件已挂载'); - }, - beforeDestroy() { - // 组件销毁前移除全局监听器 - uni.$off('global-click', this.handle_global_click); } } diff --git a/pages/plugins/video/detail/detail.vue b/pages/plugins/video/detail/detail.vue index 647c261a..c8636dc1 100644 --- a/pages/plugins/video/detail/detail.vue +++ b/pages/plugins/video/detail/detail.vue @@ -97,12 +97,12 @@ - + - +