2017-04-03 49 views
0
<!DOCTYPE html> 
<html> 
<head> 
    <title>Welcome to Vue</title> 
    <script src="https://unpkg.com/vue/dist/vue.js"></script> 
</head> 
<body> 
    <div id="app"> 
    <button v-on:click="sendTime">Load</button> 
    <div v-for="user in users"> 
    <p>{{ user.username }}</p> 
    </div> 
</div> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script> 
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 
<script> 
new Vue({ 
el: '#app', 
data: { 
    users: [ 
    { username: "billy" }, 
    { username: "ryan" } 
    ], 
}, 
methods: { 
    sendTime : function() { 
    axios.get('/api/users') 
    .then(function (response) { 
    console.log(response.data); 
    this.users = response.data; 
    }) 
    .catch(function (error) { 
    console.log(error); 
    }); 
    }, 
} 
}) 
</script> 

</body> 
</html> 

的console.log回報 -Vue.js - this.data不存儲GET響應

數組[對象,對象,對象,對象,對象,對象,對象,對象,對象,對象, 15更多...]

由於某種原因,我似乎無法得到此數組分配給'this.data'?當點擊按鈕時,唯一的變化是新的console.log,但是顯示數據中的兩個默認用戶。任何幫助將不勝感激!

+0

使用閉包或綁定或胖箭頭函數爲您的承諾回調捕獲正確的'this'。 – Bert

回答

1

可以維持到Vue的對象的引用,然後利用回調之內的參考。

methods: { 
    sendTime : function() { 
    var self = this; 
    axios.get('/api/users') 
    .then(function (response) { 
    console.log(response.data); 
    self.users = response.data; 
    }) 
    .catch(function (error) { 
    console.log(error); 
    }); 
    }, 
}