async getPorts () { const outputArr = [] const promises = [] for (let i = 1; i <= 7; i++) { promises.push( electricQuery({ electricId: ELECTRIC_ID, commandKey: 15, queryMode: 1, week: i }).then(({ data }) => { if (data[0]) { outputArr.push(data[0].timers) } }) ) } await Promise.all(promises) console.log({ data: outputArr }) return { data: outputArr } }, 每次调用接口得到周一到周日其中一天的数据 数据形态是[0 : {startTime: "12:0:0", stopTime: "22:0:0"} 1 : {startTime: "0:0:0", stopTime: "0:0:0"} 2 : {startTime: "0:0:0", stopTime: "0:0:0"} 3 : {startTime: "0:0:0", stopTime: "0:0:0"}] 现在需要把一周七天的数据渲染 到页面上 schema: { nonPagination: true, autoRefresh: true, list: this.getPorts } 代码怎么更改
时间: 2023-11-27 12:50:21 浏览: 34
可以将 `getPorts` 方法中的 `outputArr` 改为一个对象,每次获取到数据后,将其存储到对应的日期上。最后返回整个对象即可。
修改后的代码如下:
```
async getPorts() {
const outputObj = {};
const promises = [];
for (let i = 1; i <= 7; i++) {
promises.push(
electricQuery({
electricId: ELECTRIC_ID,
commandKey: 15,
queryMode: 1,
week: i
}).then(({ data }) => {
if (data[0]) {
outputObj[`week${i}`] = data[0].timers;
}
})
);
}
await Promise.all(promises);
console.log({ data: outputObj });
return { data: outputObj };
}
```
然后在页面上,可以通过 `v-for` 循环渲染出每一天的数据。
```
<template>
<div>
<div v-for="day in days" :key="day">
<h3>{{ day }}</h3>
<ul>
<li v-for="(timer, index) in data[`week${index + 1}`]" :key="index">
{{ timer.startTime }} - {{ timer.stopTime }}
</li>
</ul>
</div>
</div>
</template>
<script>
export default {
data() {
return {
data: {}
};
},
computed: {
days() {
return ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
}
},
async created() {
this.data = await this.getPorts();
},
methods: {
async getPorts() {
// getPorts 方法的实现
}
}
};
</script>
```