【问题标题】:Parse data from JS variable to Vue instance将数据从 JS 变量解析到 Vue 实例
【发布时间】:2021-02-13 15:52:49
【问题描述】:

我是 VueJS 新手,有一个非常基本的问题。如果我有一个 JS 变量并想将其解析为 Vue 实例数据部分,该怎么做?在下面的简单示例中,我想将变量“parsedJSON”解析为名为“test”的变量的数据部分下的 Vue 实例“mainVue”:

let parsedJSON = fetch(url)
    .then(function(response){
        return response.json();
    }).then(function (data){
        console.log(data)
});

let mainVue = new Vue({
    el: '#mainContent',
    data: {
        test: ""
    }
})

在我的整个代码中,“parsedJSON”变量由来自 mongoDB 的 JSON 数据组成,可以很好地获取,但我似乎找不到将其解析到我的 Vue 实例中的方法。正确的数据显示在控制台中。

【问题讨论】:

  • 你应该在 vue 实例中获取,例如beforeMount
  • 是的,我就是这么想的。只是不知道该怎么做。

标签: javascript json vue.js parsing


【解决方案1】:

你试过这样设置吗?

    data: {
        test: parsedJSON
    }

【讨论】:

  • 是的,这将适用于“正常”变量。问题是,在我的 parsedJSON 中,我从我的 mongo 数据库中获取数据,它不会让我以这种方式解析它。我将更改/更新上面的代码示例。
  • 啊我明白了,在这种情况下,我认为另一个答案是正确的。
【解决方案2】:

试试这个,在实例中获取:

let mainVue = new Vue({
  el: '#mainContent',
  data: function() {
    return {
        test: {}
    }
  },
  created() {
    fetch('...').then(function(response) {
      return response.json();
    }).then(function(data) {
      this.test = data;
    }.bind(this))
  }
})

或者更整洁一点

let mainVue = new Vue({
  el: '#mainContent',
  data: () => ({
    test: {}
  }),
  async created() {
    this.test = await fetch('...').then(res => res.json())
  }
})

【讨论】:

  • 谢谢!这对我有用。我会查一下 beforeMount,因为我不熟悉这个。
  • np,感谢您的接受,也为了整理您可以使用 async/await 和箭头函数而不是 .bind(this) 的代码,这取决于 IE 支持,因为您看起来不像使用转译器
  • 虽然说 fetch 也不在 IE 中;p
  • 再次感谢您的提示和答复。我只是看了看,似乎我可以为此使用“created”,而不是 beforeMount,对吧?实例创建后同步调用
  • 如果 test 是一个对象,将其定义为数据中的对象.. test: {}
猜你喜欢
  • 2020-04-29
  • 2017-02-27
  • 2019-03-28
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多