vue 国际化引入vue-i18n后,html正常,但是v-for里的data切换语言不起作用

发布于 2022-09-11 15:15:51 字数 920 浏览 20 评论 0

代码如下:
html:

<div class = "a">
    <span :class="{active: isTable == 'a'}" @click = "table('a')">{{ $t("EOSGame.shaiZi.part1") }}</span>
    <span :class="{active: isTable == 'b'}" @click = "table('b')">{{ $t("EOSGame.shaiZi.part2") }}</span>
</div>
<div class = "thead">
    <span v-for = "thead in theads" :key = "thead.name">{{thead.name}}</span>
</div>    

js:

export default {
    data () {
        return {
            theads: [
                {name: this.$t('EOSGame.shaiZi.part3')},
                {name: this.$t('EOSGame.shaiZi.part4')},
                {name: this.$t('EOSGame.shaiZi.part5')},
                {name: this.$t('EOSGame.shaiZi.part6')},
            ],
        }
    }
}

其中,part1和part2都可以点击按钮实时正常切换,但是v-for里的不会改变,但是如果刷新页面就会切换语言。
原因是什么呢?怎么样让theads里的也可以实时切换中英文?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

百善笑为先 2022-09-18 15:15:51

自己领悟

export default {
    data () {
        return {
            theads: [
                {name: 'EOSGame.shaiZi.part3'},
                {name: 'EOSGame.shaiZi.part4'},
                {name: 'EOSGame.shaiZi.part5'},
                {name: 'EOSGame.shaiZi.part6'},
            ],
        }
    }
}
<div class = "thead">
    <span v-for = "thead in theads" :key = "thead.name">{{$t(thead.name)}}</span>
</div>  
蓝天白云 2022-09-18 15:15:51

data是一次性生产的,你这么写只能是在 data 初始化的时候拿到这些被国际化的值,并不能响应变化。你可以把 theads 写到 computed 里,这样就可以切了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文