【问题标题】:How to get data from database for vue-i18n?如何从数据库中获取 vue-i18n 的数据?
【发布时间】:2019-12-05 06:50:39
【问题描述】:

我想从数据库中获取 i18n 的语言数据。我使用会话存储来保存数据,然后从 API 获取数据。但是 i18n 在会话存储从数据库获取数据之前创建。如何在创建 i18n 之前创建会话存储?

i18n

store

call

【问题讨论】:

    标签: vue.js vue-i18n


    【解决方案1】:

    我使用主 App.js 文件中的mounted() 挂钩来查询(javascript)session storage。像这样:

      mounted () {
        //  see if we have a user in Session Storage
        //  yes? commit it to store
        if (sessionStorage.getItem('username') && sessionStorage.getItem('userId') && sessionStorage.getItem('permission') && sessionStorage.getItem('userKey')) {
          let obj = {
            username: sessionStorage.getItem('username'),
            userId: sessionStorage.getItem('userId'),
            permission: sessionStorage.getItem('permission'),
            key: sessionStorage.getItem('userKey')
          }
          this.$store.commit('setUser', obj)
        //  no? commit default 'Guest' user
        } else {
          this.$store.commit('setUserToGuest')
        }
      }
    

    这不是一个真正的 SESSION 存储,所以它也必须在 javascript 中设置。当我从用户登录 http 请求返回时,我将变量设置如下:

    loginCheck () {
      api.user.login(this.username1, this.password1).then((response) => {
        if (response.data.login.pass > 0) {
          //  set session . . .
          sessionStorage.setItem('username', response.data.login.username)
          sessionStorage.setItem('userId', response.data.login.id)
          sessionStorage.setItem('permission', response.data.login.permission)
          sessionStorage.setItem('userKey', response.data.login.user_key)
          //  set the store
          let obj = {
            userId: response.data.login.id,
            username: response.data.login.username,
            permission: response.data.login.permission,
            key: response.data.login.user_key
          }
          this.$store.commit('setUser', obj)
        } else {
          //  set session . . .
          sessionStorage.setItem('username', 'Guest')
          sessionStorage.setItem('userId', 0)
          sessionStorage.setItem('permission', 0)
          sessionStorage.setItem('userKey', 0)
          this.$store.commit('setUserToGuest')
        }
      })
    }
    

    【讨论】:

    • 我有一种数据库语言。我尝试从中获取数据,然后将它们设置在 sessionStorage 中。然后我在 vue-i18n 中调用 sessionStorage,第一次访问我的 wep 应用程序虽然我在 sessionStorage 中看到有数据库但是当我 console.log 它为我返回一个空值。我点击刷新一切正常。我不明白为什么它返回 null 虽然我在 beforeCreate() 函数中调用它。
    • 我不知道这是否有帮助,但使用 chrome 开发人员工具的应用程序选项卡可以实时查看会话存储的状态。
    • 我认为这个问题是异步的。如何调用函数然后使用 Vue-i18n?
    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多