发现 localizeText 绑定到 globalThis 时,在<template>里调用出错 this.$store 因为 this 竟然 undefined
This commit is contained in:
parent
dc8dd18f3a
commit
05bbcd8289
24
index.js
24
index.js
@ -32,18 +32,20 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
thisPage() {
|
thisPage() {
|
||||||
return getCurrentPages()[getCurrentPages().length - 1] // 准备挂在到 window 下使用,因此不必探测 this.$store 了,肯定不存在。
|
return getCurrentPages()[getCurrentPages().length - 1] // 准备挂在到 window 下使用,因此不必探测 this?.$store 了,肯定不存在。
|
||||||
},
|
},
|
||||||
|
|
||||||
localizeText(i18nText) {
|
localizeText(i18nText) {
|
||||||
// 如果直接挂载到 Vue.prototype 下,那么可以直接访问 this.i18nText。但如果通过 this.$T.localeText 访问,那么 this.i18nText 就报错了。因此安全起见,先获取当前 page
|
// 如果直接挂载到 Vue.prototype 下,那么可以直接访问 this.i18nText。但如果通过 this.$T.localeText 访问,那么 this.i18nText 就报错了。因此安全起见,先获取当前 page
|
||||||
const thisPage = this.$store ? this // 对于组件内定义的 i18nText,要使用 this 来获得组建内的 i18nText,而不是 getCurrentPages[...] 去访问全局页面的 i18nText。
|
const pageNow = this?.$store ? this // 对于组件内定义的 i18nText,要使用 this 来获得组建内的 i18nText,而不是 getCurrentPages[...] 去访问全局页面的 i18nText。
|
||||||
: getCurrentPages()[getCurrentPages().length - 1]
|
: getCurrentPages()[getCurrentPages().length - 1]
|
||||||
if (i18nText && typeof(i18nText)==='object' && thisPage.$store?.state?.i18n?.mylang) {
|
// 支持 localizeText({...}) 来解析参数
|
||||||
return i18nText[thisPage.$store.state.i18n.mylang] || ''
|
if (i18nText && typeof(i18nText)==='object' && pageNow.$store?.state?.i18n?.mylang) {
|
||||||
|
return i18nText[pageNow.$store.state.i18n.mylang] || ''
|
||||||
}
|
}
|
||||||
if (!i18nText && typeof(thisPage.i18nText)==='object' && thisPage.$store?.state?.i18n?.mylang) {
|
// 支持 localizeText() 来解析 页面.vue 的顶层 i18nText
|
||||||
return thisPage.i18nText[thisPage.$store.state.i18n.mylang] || ''
|
if (!i18nText && typeof(pageNow.i18nText)==='object' && pageNow.$store?.state?.i18n?.mylang) {
|
||||||
|
return pageNow.i18nText[pageNow.$store.state.i18n.mylang] || ''
|
||||||
}
|
}
|
||||||
if (typeof i18nText === 'string'){
|
if (typeof i18nText === 'string'){
|
||||||
return i18nText
|
return i18nText
|
||||||
@ -52,9 +54,9 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
localeText() {
|
localeText() {
|
||||||
const thisPage = this.$store ? this // 对于组件内定义的 i18nText,要使用 this 来获得组件内的 i18nText,而不是 getCurrentPages[...] 去访问全局页面的 i18nText。
|
const pageNow = this?.$store ? this // 对于组件内定义的 i18nText,要使用 this 来获得组件内的 i18nText,而不是 getCurrentPages[...] 去访问全局页面的 i18nText。
|
||||||
: getCurrentPages()[getCurrentPages().length - 1]
|
: getCurrentPages()[getCurrentPages().length - 1]
|
||||||
return thisPage.i18nText?.[thisPage.$store.state.i18n.mylang] || {}
|
return pageNow.i18nText?.[pageNow.$store.state.i18n.mylang] || {}
|
||||||
},
|
},
|
||||||
|
|
||||||
makeServerUrl(route = '') {
|
makeServerUrl(route = '') {
|
||||||
@ -372,9 +374,9 @@ module.exports = {
|
|||||||
})
|
})
|
||||||
*/
|
*/
|
||||||
showToast({ tool, type, image, title, duration = 2000, ...rest }) {
|
showToast({ tool, type, image, title, duration = 2000, ...rest }) {
|
||||||
const thisPage = this.$store ? this // 对于组件内定义的 i18nText,要使用 this 来获得组建内的 i18nText,而不是 getCurrentPages[...] 去访问全局页面的 i18nText。
|
const pageNow = this?.$store ? this // 对于组件内定义的 i18nText,要使用 this 来获得组建内的 i18nText,而不是 getCurrentPages[...] 去访问全局页面的 i18nText。
|
||||||
: getCurrentPages()[getCurrentPages().length - 1]
|
: getCurrentPages()[getCurrentPages().length - 1]
|
||||||
if (tool === 'uni' || !(thisPage.$refs && thisPage.$refs.toast)) {
|
if (tool === 'uni' || !(pageNow.$refs && pageNow.$refs.toast)) {
|
||||||
// #ifdef APP-PLUS
|
// #ifdef APP-PLUS
|
||||||
uni.showToast({ icon: 'none', title, duration, ...rest })
|
uni.showToast({ icon: 'none', title, duration, ...rest })
|
||||||
// #endif
|
// #endif
|
||||||
@ -383,7 +385,7 @@ module.exports = {
|
|||||||
// #endif
|
// #endif
|
||||||
} else {
|
} else {
|
||||||
// 根据 html 中不同的组件 <ucToast/> 或 <toast/> 而不同。
|
// 根据 html 中不同的组件 <ucToast/> 或 <toast/> 而不同。
|
||||||
thisPage.$refs.toast.show({ type, title, duration, ...rest })
|
pageNow.$refs.toast.show({ type, title, duration, ...rest })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user