Javascript 如何使组件网等待axios从API获得响应?
我正在尝试构建一个应用程序,从我创建的API(django rest框架)中提取数据,并基于该数据,它应该显示d3饼图。不幸的是,图表并不等待axios得到响应,而是抛出错误。似乎图表只能访问Javascript 如何使组件网等待axios从API获得响应?,javascript,vuejs2,axios,Javascript,Vuejs2,Axios,我正在尝试构建一个应用程序,从我创建的API(django rest框架)中提取数据,并基于该数据,它应该显示d3饼图。不幸的是,图表并不等待axios得到响应,而是抛出错误。似乎图表只能访问data()中定义的变量,以后对该变量的任何更改都不会影响它 问题视图 {{问题} 导出默认值{ 数据(){ 返回{ 加载:false, 问题:无效,, 图表数据:{ 图表类型:'pieChart', 选择器:'图表', 标题:“重要数据”, 宽度:1000, 身高:700, 指标:“选项投票”, dim
data()
中定义的变量,以后对该变量的任何更改都不会影响它
问题视图
{{问题}
导出默认值{
数据(){
返回{
加载:false,
问题:无效,,
图表数据:{
图表类型:'pieChart',
选择器:'图表',
标题:“重要数据”,
宽度:1000,
身高:700,
指标:“选项投票”,
dim:“选项_文本”,
数据:空,
},
}
},
已创建:函数(){
这是axios
.get(“http://localhost:8000/api/questions/“+this.$route.query.q)
.然后(response=>(this.question=response.data))
.然后(response=>(this.chartData.data=response.data.options))
.然后(this.loaded=true)
.catch(error=>(this.error=error));
},
};
我错过什么了吗?有没有办法让整个页面等待API调用完成并将该值推送到
data()
?您可以通过执行简单的v-if
数据不应该是函数返回的对象吗 像这样:
data: function () {
return { a: 1 }
}
好的,我已经让它工作了,但将所有数据放在一个对象中:
<template>
<div id="question">
<h1>{{ data.question.question_text }}</h1>
<v-chart :chartData="data.chartData"></v-chart>
</div>
</template>
<script>
export default {
data() {
return {
data: null
};
},
created: function() {
this.axios
.get("http://localhost:8000/api/questions/" + this.$route.query.q)
.then(
response =>
(this.data = {
question: response.data,
chartData: {
chartType: "pieChart",
selector: "chart",
title: "Important Data",
width: 1000,
height: 700,
metric: "option_votes",
dim: "option_text",
data: response.data.options
}
})
)
.catch(error => (this.error = error));
}
};
</script>
{{data.question.question_text}
导出默认值{
数据(){
返回{
数据:空
};
},
已创建:函数(){
这是axios
.get(“http://localhost:8000/api/questions/“+this.$route.query.q)
.那么(
响应=>
(此数据={
问题:答复.数据,
图表数据:{
图表类型:“pieChart”,
选择器:“图表”,
标题:“重要数据”,
宽度:1000,
身高:700,
指标:“选项投票”,
dim:“选项_文本”,
数据:response.data.options
}
})
)
.catch(error=>(this.error=error));
}
};
看起来有两个引用响应对象的.then()函数无效。请查看计算属性:另一个选项是在收到数据后重新加载图表。计算属性不会更改任何内容。。。收到数据后如何重新加载图表?与OP的问题无关这似乎不起作用。它可以防止所有错误,但不显示任何内容。-正如您所看到的,问题变量充满了来自API的数据,但chartData.data从不更改。。。