el-select用作分页时, 全部显示选项的el-option在刷新页面,el-table数据未渲染完成时,会显示成value,刷新页面,数据渲染完毕后,又会显示成label,这个问题怎么解决?代码怎么写
时间: 2024-02-16 19:04:58 浏览: 75
你可以在 el-select 组件的 mounted 钩子函数中手动将 v-model 的值设置为正确的值。代码示例如下:
```vue
<template>
<div>
<el-select v-model="currentPage" placeholder="请选择">
<el-option v-for="page in pages" :key="page" :value="page" :label="page" :disabled="!isPageReady">{{ isPageReady ? page : 'Loading...' }}</el-option>
</el-select>
<el-table :data="tableData"></el-table>
</div>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pages: [],
tableData: [],
isPageReady: false
}
},
mounted() {
// 模拟异步请求获取分页数据
setTimeout(() => {
this.pages = [1, 2, 3, 4, 5];
this.tableData = [{}, {}, {}, {}, {}];
this.isPageReady = true;
this.currentPage = 1; // 手动将 v-model 的值设置为正确的值
}, 2000);
}
}
</script>
```
在 el-option 中,使用了一个三元表达式来判断 el-table 数据是否已经渲染完成,如果渲染完成则将 label 属性设置为正确的值,否则将 label 属性设置为 loading 等提示信息。其中 isPageReady 是一个标志位,用来表示 el-table 数据是否已经渲染完成。
在 mounted 钩子函数中,模拟了一个异步请求获取分页数据的过程,当数据渲染完成后,将 isPageReady 标志位设置为 true,并手动将 v-model 的值设置为 1,以确保 el-select 组件的值正确显示。
阅读全文