vue.js - 语言更改后 Vue 数据变量不更新

标签 vue.js

我有一个数据变量如下:

data(){
  return {
    amount: {
      active: false,
      name: this.$i18n.t('key_name'),
      value: this.$i18n.t('key_value')
    }
  }
}

数据变量正在使用本地化字符串。问题是,当我从下拉列表中更改语言时,amount 变量不会更新,直到发生任何其他事件。我相信这与 $nextTick() 有关。

但不确定如何正确处理这个问题,以便让更改立即反射(reflect)在 amount 变量中。

我无法将其作为计算属性,因为我必须在稍后为该变量赋值。

像这样:

this.amount.active = true

我该如何解决这个问题?

最佳答案

很难说出你是如何使用 Vue i18n 的,但你可以使用 watcher正如文档中所述,请注意全局 i18n.locale object ,类似于:

<script>
export default {
  name: 'app',
  data () {
    return {
      amount: {
        active: false,
        name: this.$i18n.t('key_name'),
        value: this.$i18n.t('key_value')
      }
    }
  },
  watch: {
    this.$i18n.locale (val) {
      this.amount.active = true
    }
  }
}
</script>

取决于它在您的项目中的配置方式。

关于vue.js - 语言更改后 Vue 数据变量不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870308/

相关文章:

javascript - 如何使 vuex getter 响应式

vue.js - VueJS - 访问已安装的商店数据

git - 为现有存储库生成项目

javascript - 使用 v-view 的 VueJS 转换

vue.js - 数据表: Pagination Arrows & Row Select Box Not Displayed

unit-testing - _vuex.default.store 不是构造函数

javascript - 按钮上的工具提示有效,但输入时无效

php - 使用 PHP 和 Vue.js 的应用程序开发设置

css - v-if显示子div时如何避免父元素跳高

javascript - 已将计算属性分配给但它没有 setter - 一个切换组件