要实现在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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录