如何在Vuejs上下文中使用API获取图表数据
我是Vuejs新手,我希望通过从API获取数据而不是直接提供数据来提高代码的效率 这是我的密码:如何在Vuejs上下文中使用API获取图表数据,api,vue.js,Api,Vue.js,我是Vuejs新手,我希望通过从API获取数据而不是直接提供数据来提高代码的效率 这是我的密码: 导出默认值{ 名称:'图表', 数据:()=>({ 到达日期:[ 1600934100.0, 1602009600.0, 1602747060.0, 1603050158.390939, 1603305573.992575 ], 挑战:[ 9.0, 9.5, 2.5, 11.52, 12.4 ] }), 挂载(){ //eslint禁用下一行无未使用的变量 const data=this.arrd
导出默认值{
名称:'图表',
数据:()=>({
到达日期:[
1600934100.0,
1602009600.0,
1602747060.0,
1603050158.390939,
1603305573.992575
],
挑战:[
9.0,
9.5,
2.5,
11.52,
12.4
]
}),
挂载(){
//eslint禁用下一行无未使用的变量
const data=this.arrdate.map((arrdate,index)=>({
x:新日期(arrdate*1000),
y:这个.挑战[索引]
}))
const ctx=document.getElementById('myChart').getContext('2d'))
//eslint禁用下一行无未定义,无未使用的变量
常量myChart=新图表(ctx{
键入:“行”,
数据:{
数据集:[
{
数据,
标签:“性能”,
边框颜色:“#7367F0”
}
]
},
选项:{
比例:{
xAxes:[
{
键入:“时间”,
时间:{
单位:月,
显示格式:{
月份:'MMM YYYY'
}
}
}
],
雅克斯:[
{
滴答声:{
//eslint禁用下一行无未使用的变量
回调(值、索引、值){
返回`${value}%`
}
}
}
]
}
}
})
}
}
如您所见,“date”和“challenge”包含直接提供的数据,但我想从API获取数据
我的API返回的内容:
{
"date": [
1600934100.0,
1602009600.0,
1602747060.0,
1603050158.390939,
1603305573.992575
],
"challenge": [
9.1
9.5
-2.8
18.52
15.4
]
}
如您所见,我希望使用API将“日期”数据置于arrdate中,“挑战”数据置于arrchallenge中
请有人帮我解决这个问题,如果有人知道答案,请将更改添加到我的代码中,因为我是vuejs新手,包装内容对我来说很困难。首先将
axios
添加到您的项目中,并阅读vue文档中的以下链接:
之后,您有两个选择:
在页面加载时调用API
使用此选项,您的vue应用程序加载后,您的API将立即调用,因此在您创建的钩子中执行如下API调用:
created() {
axios.get('yourAPIUrl').then((response) => {
// reassign date and challenge with the response from the API call here for example:
this.date = response.data.date;
this.challenge = response.data.challenge
});
}
<button @click="callAPI">get data from server</button>
methods: {
callAPI() {
// same code as in the created example
}
}
基本上,它的作用是在创建vue时调用API,然后在部分使用响应更新数据中定义的变量
点击按钮调用API
使用此方法,页面上有一个按钮,如下所示:
created() {
axios.get('yourAPIUrl').then((response) => {
// reassign date and challenge with the response from the API call here for example:
this.date = response.data.date;
this.challenge = response.data.challenge
});
}
<button @click="callAPI">get data from server</button>
methods: {
callAPI() {
// same code as in the created example
}
}
您还可以使用async。。。如果需要,请等待API调用的语法
您还可以阅读这篇关于如何在项目中安装和使用axios的文章:
首先将axios
添加到您的项目中,并阅读vue文档中的以下链接:
之后,您有两个选择:
在页面加载时调用API
使用此选项,您的vue应用程序加载后,您的API将立即调用,因此在您创建的钩子中执行如下API调用:
created() {
axios.get('yourAPIUrl').then((response) => {
// reassign date and challenge with the response from the API call here for example:
this.date = response.data.date;
this.challenge = response.data.challenge
});
}
<button @click="callAPI">get data from server</button>
methods: {
callAPI() {
// same code as in the created example
}
}
基本上,它的作用是在创建vue时调用API,然后在部分使用响应更新数据中定义的变量
点击按钮调用API
使用此方法,页面上有一个按钮,如下所示:
created() {
axios.get('yourAPIUrl').then((response) => {
// reassign date and challenge with the response from the API call here for example:
this.date = response.data.date;
this.challenge = response.data.challenge
});
}
<button @click="callAPI">get data from server</button>
methods: {
callAPI() {
// same code as in the created example
}
}
您还可以使用async。。。如果需要,请等待API调用的语法
您还可以阅读这篇关于如何在项目中安装和使用axios的文章:
我创建了此API供您用于测试任何人提供的解决方案:
以下是回应:
您还可以在Wirespec上创建自己的API,并使用它生成更多数据(顺序或随机),如果您需要更多不同的测试。我创建了此API供您用于测试任何人提供的解决方案:
以下是回应:
您也可以在Wirespec上创建自己的API,并使用它生成更多数据(顺序或随机),如果您需要更多不同的测试。使用HTTP客户端或本机调用您的API,然后将响应加载到您的数据属性中并绘制图表。我如何在代码中做到这一点,请告诉我,我应该把它放在我的代码中的什么地方,我想从我的API调用日期和挑战。使用HTTP客户端或本机调用你的API,然后将响应加载到你的数据属性中并绘制图表。我如何在我的代码中做到这一点,你能告诉我,我应该把它放在我的代码中的什么地方,我想从我的API中调用date和Challenge。谢谢你的回答,我将使用“页面加载时调用API”,现在你能告诉我应该把它放在我上面给出的代码中的什么位置,然后在“arrdate和arrchallenge”中使用什么变量来使用“date&challenge”来自API。请帮助我,因为我是vue的新手,在您的vue对象中定义created()
,就像您在代码中定义mounted()
一样(比如将其放在mounted()
的上方,这并不重要),然后实现API调用,如我回答中的示例所示。之后,检查网络选项卡,查看API响应中所需数据的位置。很可能您可以在中访问它,然后在中访问它,如响应.data.'variableName'
。然后使用它设置vue对象的适当数据,就像ans中的示例一样答:是的,正如你所说,我加载了我的API,现在我只有一个问题,那就是我应该在代码中的“arrdate&arrchance”中使用哪个变量。我尝试在arrdate中使用this.date,在arrchance中使用this.challenge。但是我的图表中没有显示任何内容。你能回答吗