ajax请求写在created中,在请求成功的函数中把请求的数据 赋值给data中的空数组 ,然后在mounted中打印 data中数据为空 。需要在页面加载完成时把数据调回来渲染到页面上
ajax请求写在created中,在请求成功的函数中把请求的数据 赋值给data中的空数组 ,然后在mounted中打印 data中数据为空 。需要在页面加载完成时把数据调回来渲染到页面上
反驳一下楼上,created中this已经指向当前vue示例。
另外分析一下执行顺序,
Created -> 发送 ajax —> mounted -> ajax回调
所以 先看看请求的接口回来的数据线。 另外最好能在线上复现一下bug,给jsfiddle连接最好
ajax是异步执行的。
<div>{{bookId}}</div>
在setData里面处理数据
export default {
name: 'app',
data() {
bookId : ''
},
created(){
this.loadData(this.setData);
},
methods:{
loadData(callBack) {
const This = this;
const url = 'https://api.douban.com/v2/book/1220562';
getBookPromise()
.then(res => {
console.log(res)
callBack(res.body); //callBack异步回调
})
.catch(res => {
console.log(res);
})
function getBookPromise() {
return new Promise((resolve, reject) => {
This.$http.jsonp(url)
.then(res => {
resolve(res)
})
.catch(res => {
reject(res)
})
})
}
},
setData(data) { //对数据做一些处理
this.bookId = data.id;
console.log(this.bookId)
}
}
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
别再created中请求 this还没有创建完成 你可以在mounted中请求
你这个this保存成了that?
那你打印that.list
还有在created中请求也行但是不能用箭头函数