Component({ data: { selected: 0, color: "#999999", selectedColor: "#FF6600", backgroundColor: "#FFFFFF", list: [{ pagePath: "/pages/index/index", iconPath: "/static/tabbar/home.png", selectedIconPath: "/static/tabbar/home-active.png", text: "首页" }, { pagePath: "/pages/community/index", iconPath: "/static/tabbar/community.png", selectedIconPath: "/static/tabbar/community-active.png", text: "社区" }, { pagePath: "/pages/legou/index", iconPath: "/static/tabbar/legou.png", selectedIconPath: "/static/tabbar/legou-active.png", text: "乐购", isSpecial: true // 标记为特殊按钮 }, { pagePath: "/pages/cart/index", iconPath: "/static/tabbar/cart.png", selectedIconPath: "/static/tabbar/cart-active.png", text: "购物车" }, { pagePath: "/pages/user/index", iconPath: "/static/tabbar/user.png", selectedIconPath: "/static/tabbar/user-active.png", text: "我的" }] }, attached() { // 延迟获取当前页面,确保页面已经完全加载 setTimeout(() => { this.setTabBarIndex() }, 100) }, methods: { switchTab(e) { try { const data = e.currentTarget.dataset const url = data.path const index = data.index console.log('切换到tab:', url, 'index:', index) // 更新选中状态 this.setData({ selected: index }) // 页面跳转 wx.switchTab({ url, success: () => { console.log('页面跳转成功:', url) // 跳转成功后更新全局tabBar状态 try { if (typeof this.getTabBar === 'function' && this.getTabBar()) { this.getTabBar().setData({ selected: index }) } } catch (error) { console.log('更新全局tabBar状态失败:', error) } }, fail: (error) => { console.error('页面跳转失败:', error) } }) } catch (error) { console.error('切换tab失败:', error) } }, // 设置当前tabBar索引 setTabBarIndex() { try { const pages = getCurrentPages() if (!pages || pages.length === 0) { console.log('页面栈为空,稍后重试') // 如果页面栈为空,延迟重试 setTimeout(() => { this.setTabBarIndex() }, 200) return } const currentPage = pages[pages.length - 1] if (!currentPage || !currentPage.route) { console.log('当前页面信息不完整,使用默认索引') this.setData({ selected: 0 }) return } const url = '/' + currentPage.route console.log('当前页面路径:', url) const index = this.data.list.findIndex(item => item.pagePath === url) if (index !== -1) { this.setData({ selected: index }) console.log('设置tabBar选中索引:', index) } else { console.log('未找到匹配的tabBar页面,使用默认索引') this.setData({ selected: 0 }) } } catch (error) { console.error('设置tabBar索引失败:', error) // 出错时设置默认选中首页 this.setData({ selected: 0 }) } }, // 更新选中状态的方法,供页面调用 updateSelected(index) { try { console.log('更新tabBar选中状态:', index) this.setData({ selected: index }) } catch (error) { console.error('更新选中状态失败:', error) } } } })