findTravelGuideList().then(res => { this.tableData = res.data.datas.ulist.map(de => { let tempList = de.imgLink.split(','); // 将图片分隔开来,分别存储在临时变量中 console.log(tempList); return de; }) this.total = res.data.datas.pageInfo.total; })怎么将请求的多少数组数据遍历到页面上vue
时间: 2024-02-14 10:05:47 浏览: 116
你可以使用 `v-for` 指令在 Vue 模板中遍历 `tableData` 数组,然后使用插值语法 `{{}}` 将每个数组元素的属性值显示出来。例如:
```html
<table>
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr v-for="item in tableData" :key="item.id">
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
</tr>
</tbody>
</table>
```
这里使用了 `v-for` 指令来遍历 `tableData` 数组,并使用 `:key` 绑定 `item.id` 作为每个元素的唯一标识。在每个 `<td>` 元素中,使用插值语法 `{{}}` 显示每个数组元素的属性值。
相关问题
优化这段代码 let findNoAreasData = []; console.log('findNoAreas res', res); res.datas.data.forEach(x => { // 存在限购地区 if (x.no_areas.length > 0) { x.no_areas.filter(y => { if (y.province_id == this.addrCode.province) { this.goodsDatas.filter(z => { if (z.goods_sku.third_sku_id == y.sku_id) { z.goods_sku.notDelivery = true; if (z.goods_sku.notDelivery) { this.no_areas = true; } } }) } }) } });
这段代码可以优化如下:
```
let noAreasSkuIds = res.datas.data
.filter(x => x.no_areas.some(y => y.province_id == this.addrCode.province))
.map(x => x.no_areas.filter(y => y.province_id == this.addrCode.province))
.flat()
.map(y => y.sku_id);
if (noAreasSkuIds.length > 0) {
this.goodsDatas.forEach(z => {
if (noAreasSkuIds.includes(z.goods_sku.third_sku_id)) {
z.goods_sku.notDelivery = true;
this.no_areas = true;
}
});
}
```
这段代码首先使用 `filter` 函数筛选出限购地区中包含当前省份的数据,并使用 `map` 函数提取出对应的 `sku_id` 数组。然后判断该数组是否为空,如果不为空则遍历商品数据,将 `sku_id` 在数组中出现过的商品标记为不可配送。这样可以减少嵌套循环的层数,提高代码的可读性和执行效率。
this.$db[_address].where(`create_uid == "${this.member._id}"`).tofirst({ orderby: 'is_default desc' }) .then(res => { console.log('onShow res', res); if (res && res.code === 200) { this.addrData = res.datas; this.calcTotalMoney(); this.addressFee(this.addrData); this.loadData(); } })用async await更改这段代码为等待this.addressFee()方法执行完再执行this.loadData();
您可以使用 `async/await` 实现等待 `this.addressFee()` 方法执行完毕再执行 `this.loadData()` 方法的操作。具体代码如下:
```javascript
async yourFunction() {
try {
const res = await this.$db[_address].where(`create_uid == "${this.member._id}"`).tofirst({
orderby: 'is_default desc'
});
console.log('onShow res', res);
if (res && res.code === 200) {
this.addrData = res.datas;
this.calcTotalMoney();
await this.addressFee(this.addrData);
await this.loadData();
}
} catch (error) {
console.error(error);
}
}
```
上述代码中,`yourFunction()` 方法使用了 `async` 关键字来表示它是一个异步函数。在函数内部,我们使用 `await` 关键字来等待 `this.$db[_address].where().tofirst()` 方法执行完成,返回结果保存在 `res` 变量中。
如果 `res` 变量存在并且 `res.code` 等于 200,则执行下一步操作。在这一步操作中,我们使用 `await` 关键字等待 `this.addressFee(this.addrData)` 方法执行完毕。当 `this.addressFee(this.addrData)` 方法执行完成后,再使用 `await` 关键字等待 `this.loadData()` 方法执行结束。
在 `try/catch` 结构中,我们使用 `catch` 捕获可能出现的错误,并将错误信息打印到控制台上。这样就实现了等待 `this.addressFee()` 方法执行完毕再执行 `this.loadData()` 方法的操作。
阅读全文