尝试使用Vue js发送http get请求。虽然看不到逻辑上的任何问题,但是使用vuejs经验不足。
继续出现以下两个错误:
和
var owm = new Vue({
el: '#owm',
data: {
debug: true,
weather: []
},
methods: {
loadWeather: function() {
this.$http.get('http://api.openweathermap.org/data/2.5/find?q=stockholm&type=like&appid=766b78c39446a8fa6313c3b7b2063ade', function(data, status, request){
if(status == 200)
{
this.weather = data;
console.log(this.weather);
}
});
}
},
mounted: function () {
this.loadWeather();
}
});
使用vue资源更新了代码,错误已消失,但不会控制台记录任何数据,这可能是什么问题?
Vue.use(VueResource);
var owm = new Vue({
el: '#owm',
data: {
weather: []
},
methods: {
loadWeather: function() {
this.$http.get('http://api.openweathermap.org/data/2.5/find?q=stockholm&type=like&appid=[API KEY]', function(data, status, request){
if(status == 200)
{
this.weather = data;
console.log(this.weather);
}
});
}
},
mounted: function () {
this.loadWeather();
}
});
编辑:
该代码有效,但实际上并不太了解.then函数,以及为什么请求不能与回调函数一起使用,而.then函数起作用。
this.$http.get('http://api.openweathermap.org/data/2.5/find?q=stockholm&type=like&appid=[API KEY]').then((data) => {
this.weather = data;
console.log(this.weather);
最佳答案
我在我的机器上尝试了一个示例。您使用$ http的方式错误。因为$ http解析了一个promise,所以它的回调可以在then函数中处理。这为我工作:
loadWeather: function() {
var self=this;
this.$http.get('http://api.openweathermap.org/data/2.5/find?q=stockholm&type=like&appid=766b78c39446a8fa6313c3b7b2063ade').then(function(response){
if(response.status == "200"){
console.log(response);
self.weather = response.data.list[0].weather // use self instead of this
}
})