异步加载的数据将不会呈现

时间:2019-06-11 21:10:17

标签: javascript vue.js

我已经通过Jayson从服务器加载了异步数据。完成加载后,布尔值“ loading”设置为false,但是我的内容没有重新呈现。 我可以在控制台上看到数据已正确加载。

var App = new Vue({
  el: '#app',
  data: {
    title: 'test',
    data: [],
    loading: true
  },
  created() {
    this.getProjectDataFromServer()
  },
  methods: {
    getProjectDataFromServer() {
      client.request('get', null, function(err, response) {
        if(err) throw err;
        this.data = response.result;
        this.loading = false;
        console.log(this.data);
      });
    }
  }
});
<main id='app'>
  <div v-if="loading===false" :key="loading">
    IT WORKS
  </div>
</main>

1 个答案:

答案 0 :(得分:0)

使用lambda代替函数来捕获this的上下文。

getProjectDataFromServer() {
      client.request('get', null, (err, response) => {
        if(err) throw err;
        this.data = response.result;
        this.loading = false;
        console.log(this.data);
      });
    }

或在函数外部的闭包中捕获this上下文。

getProjectDataFromServer() {
      const that = this;
      client.request('get', null, function (err, response) {
        if(err) throw err;
        that.data = response.result;
        that.loading = false;
        console.log(that.data);
      });
    }

相关问题