javascript - 为什么Vue实例的数据没有更新

标签 javascript vue.js vuejs2

使用的是Vue 2.2.6版本。
我构建了非常简单的 Vue 实例,我希望它返回员工姓名列表。但问题是,在获取 /employees.json employees 数据后,数据没有更新。我尝试使用 console.log 对其进行调试,它显示 loadData() 函数内部的员工数据已正确设置。但是执行完这个函数后,employees 的值又变空了。

var employees = new Vue({
  el: 'employees',
  template: "<ul id='employees'><li v-for='employee in employees'>{{ employee['name'] }}</li></ul>",
  data: {
    employees: []
  },
  methods: {
    loadData: function () {
      this.$http.get('/employees.json').then(response => {
        this.employees = response.body;
       //1. console.log returns here ">employees: [object Object]"
      });
    }
  },
  mounted: function (){
    this.loadData();
    //2. console.log returns here empty employees value
  }
})

我哪里错了?如何正确地将值从 /employees.json 分配给 employees 变量?

最佳答案

mounted 中的 console.log 将返回空,因为 loadData 是异步的,并且不会完成。

您的 el 无法正常工作,因为它需要 #: '#employees' template 不会像那样内联工作,因为模板是为组件准备的。它会把它放在哪里?

var employees = new Vue({
  el: '#employees',
  data: {
    employees: []
  },
  methods: {
    loadData: function () {
      setTimeout(() => {
        console.log('setting');
        this.employees = [{name:'one'},{name:'two'}];
      }, 800);
      /*this.$http.get('/employees.json').then(response => {
        this.employees = response.body;
       //1. console.log returns here ">employees: [object Object]"
      });*/
    }
  },
  mounted: function (){
    this.loadData();
  }
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.2.6/vue.min.js"></script>
<ul id='employees'><li v-for='employee in employees'>{{ employee['name'] }}</li></ul>

关于javascript - 为什么Vue实例的数据没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264485/

相关文章:

vue.js - 登录后 NuxtJS 重定向

vue.js - 用wowjs和vue触发一个新的动画事件

vuejs2 - promise 解决后设置数据属性值

javascript - 当用户单击除 <li> 及其所有子项之外的任何内容时关闭菜单

javascript - ValidFormBuilder 输出奇怪的 JavaScript 代码

javascript - 在函数中使用时为 "process is not defined"(Vue/Quasar)

javascript - Vue.js 中从 ul 列表中获取选中的选中值

javascript - 如何取出双数组中的对象

javascript - 我正在开发的 slider 存在问题

javascript - 访问vue数据组件