feat:添加中英文切换按钮
This commit is contained in:
@@ -30,7 +30,9 @@
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
diyData: null
|
||||
diyData: null,
|
||||
// 新增:标记是否已监听语言事件,避免重复监听
|
||||
langListenerAdded: false
|
||||
};
|
||||
},
|
||||
onLoad() {
|
||||
@@ -38,20 +40,51 @@
|
||||
this.$langConfig.refresh();
|
||||
uni.hideTabBar();
|
||||
this.getDiyInfo();
|
||||
// 新增:监听全局语言切换事件
|
||||
this.addLangListener();
|
||||
},
|
||||
onShow() {
|
||||
if (this.$refs.category) this.$refs.category[0].pageShow();
|
||||
},
|
||||
onUnload() {
|
||||
if (!this.storeToken && this.$refs.login) this.$refs.login.cancelCompleteInfo();
|
||||
// 新增:页面销毁时移除语言监听,避免内存泄漏
|
||||
this.removeLangListener();
|
||||
},
|
||||
methods: {
|
||||
// 新增:添加语言切换监听(封装为方法,避免重复监听)
|
||||
addLangListener() {
|
||||
if (!this.langListenerAdded) {
|
||||
uni.$on('lang-changed', this.handleLangChange);
|
||||
this.langListenerAdded = true;
|
||||
}
|
||||
},
|
||||
// 新增:移除语言切换监听
|
||||
removeLangListener() {
|
||||
if (this.langListenerAdded) {
|
||||
uni.$off('lang-changed', this.handleLangChange);
|
||||
this.langListenerAdded = false;
|
||||
}
|
||||
},
|
||||
// 新增:语言切换后的处理逻辑
|
||||
handleLangChange() {
|
||||
// 1. 刷新多语言配置(确保语言包生效)
|
||||
this.$langConfig.refresh();
|
||||
// 2. 显示加载遮罩,提升用户体验
|
||||
if (this.$refs.loadingCover) this.$refs.loadingCover.show();
|
||||
// 3. 重新请求分类数据(核心:获取对应语言的分类内容)
|
||||
this.getDiyInfo();
|
||||
},
|
||||
getDiyInfo() {
|
||||
this.$api.sendRequest({
|
||||
url: '/api/diyview/info',
|
||||
data: {
|
||||
name: 'DIY_VIEW_GOODS_CATEGORY'
|
||||
},
|
||||
// 新增:请求头携带当前语言,让后端返回对应语言的分类数据
|
||||
header: {
|
||||
'lang': uni.getStorageSync('lang') || 'zh-cn'
|
||||
},
|
||||
success: res => {
|
||||
if (res.code == 0 && res.data) {
|
||||
this.diyData = res.data;
|
||||
@@ -61,6 +94,11 @@
|
||||
}
|
||||
uni.stopPullDownRefresh();
|
||||
}
|
||||
},
|
||||
// 新增:请求失败时隐藏加载遮罩,避免遮罩卡死
|
||||
fail: () => {
|
||||
if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
|
||||
uni.stopPullDownRefresh();
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -71,6 +109,14 @@
|
||||
onPullDownRefresh() {
|
||||
uni.hideTabBar();
|
||||
this.getDiyInfo();
|
||||
},
|
||||
// 新增:页面隐藏时移除监听(可选,增强容错)
|
||||
onHide() {
|
||||
this.removeLangListener();
|
||||
},
|
||||
// 新增:页面重新显示时重新添加监听
|
||||
onReShow() {
|
||||
this.addLangListener();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user