2016-11-10 83 views
1

我以下面的格式从后端接收对象数组。我试图获取这些数据并将其推入JavaScript数组中,以便稍后根据我的需要使用它们。Vuejs阵列推送

[ 
    { 
    id: 1, 
    name: "Dr. Darrin Frami III", 
    email: "[email protected]", 
    address: "42568 Cameron Cove Fritschborough, MA 86432-0749", 

    }, 
] 

这里是我的vuejs代码:

<script> 
    export default { 
     data(){ 
     return { 
      fakeUsers: [], 
      fakeUser: {id: '', name: '', email: ''}, 
     } 
     }, 
     methods:{ 

     }, 
     mounted() { 
      var route = '/get-users'; 
      this.$http.get(route).then((response)=>{ 
       for (var i = 0; i < response.data.length; i++) { 
       this.fakeUser.id = response.data[i].id; 
       this.fakeUser.name = response.data[i].name; 
       this.fakeUser.email = response.data[i].email; 
       this.fakeUsers.push(this.fakeUser); 
       } 

      }); 
      console.log(this.fakeUsers); 
      console.log(this.fakeUsers[0]); 
     } 
    } 
</script> 

的VUE-dev的工具,结果是:该行console.log(this.fakeUsers);[__ob__: Observer]

enter image description here

输出。它不应该打印像[Array[10]]

线console.log(this.fakeUsers[0]);的输出是undefined,我不明白为什么。

回答

4

$ HTTP()创建一个异步AJAX调用,所以在then()代码后之后执行控制台命令。

简单的解决方案:将控制台命令放入.then()中的函数中。

+0

优秀的答案队友..但我需要知道一件事..因为即时通讯与新vuejs ..并没有完成阅读所有文件。只是看了一些教程。但我有一个查询,我怎样才能得到第一个元素的Ajax调用完成后,页面加载? @linus –