我的vue页面配置了基础title放到一个js文件里面的使用vue-i18n时如何实现这个js文件里面的title中英文切换
要实现在vue-i18n切换语言时,同时切换基础title,可以使用vue-i18n的全局切换语言事件以及Vue的computed属性来实现。
首先,在你的基础title配置的js文件中,可以定义一个全局的title变量,并且将该变量导出:
// baseTitle.js
export let baseTitle = "My App";
然后,在你的Vue页面中,引入该js文件,并且在Vue的computed属性中根据当前语言切换基础title:
import { baseTitle } from './baseTitle.js';
export default {
computed: {
pageTitle() {
return this.$t('page.title') + ' - ' + baseTitle;
}
}
}
在上面的代码中,我们将基础title与当前页面的title进行拼接,从而实现基础title的切换。
最后,在模板中使用pageTitle来显示页面的title:
<template>
<div>
<h1>{{ pageTitle }}</h1>
...
</div>
</template>
当使用vue-i18n切换语言时,会触发vue-i18n的全局切换语言事件,你可以监听该事件,在事件回调函数中重新计算pageTitle,从而实现基础title的切换。
import { baseTitle } from './baseTitle.js';
export default {
computed: {
pageTitle() {
return this.$t('page.title') + ' - ' + baseTitle;
}
},
created() {
this.$root.$on('languageChanged', this.updateTitle);
},
destroyed() {
this.$root.$off('languageChanged', this.updateTitle);
},
methods: {
updateTitle() {
this.$forceUpdate();
}
}
}
在上面的代码中,我们使用this.$root.$on方法监听languageChanged事件,并在created钩子函数中注册事件回调函数updateTitle,在destroyed钩子函数中取消事件监听。在updateTitle方法中,通过调用this.$forceUpdate()来强制重新渲染页面,从而更新pageTitle。
这样,当你使用vue-i18n切换语言时,updateTitle方法会被调用,pageTitle会被重新计算,基础title也会随之切换
原文地址: http://www.cveoy.top/t/topic/hZNG 著作权归作者所有。请勿转载和采集!