请问这个给element ui动态赋值列宽度的函数 有什么问题呀 求解
// 我循环了element ui 表格列,想动态设置:label和:width// 两个同理 方式不同 但是:width这样就不行
<el-table
v-if="tableShowHide"
v-loading="loading"
id="allDataTable"
:data="tableDataPass"
>
// item是每一列 列名
<div>
<el-table-column
sortable="custom"
v-for="(item, index) in userSelectColumn"
:key="index"
:prop="item"
:label="hearderName[item]"
:width="rowWidth(item)"
>
......
</el-table-column>
</el-table>
// 这个方法我想用rowWidth来配置 指定列的宽度 // 想问一下为什么rowWidth只有循环的最后一个宽度在表格生效
// 但是像:label 这样 直接用item做key就可以 请问rowWidth这样有什么问题吗
// 这个item也是循环的呀 整个函数不也是循环返回吗
rowWidth(val) {
let widths = ''
if (tableRowWidth.length > 0)
{
this.allTableConfig.tableRowWidth.forEach((u) => {
if (u.title === val) {
widths = u.width
} else {
widths = ''
}
})
} else {
widths = ''
}
return widths
},
// 这是要匹配的列对应宽度的数据 tableRowWidth: [
{ title: 'ID', width: '80' },
{ title: 'Year', width: '80' },
]
// :label和:width同理 但是为什么函数返回就只有最后一个有效呢// 这样直接取key就可以全部列生效
hearderName: {
ID: '123',
'Year': '456'
},
回答:
因为函数写的有问题,你捋一下,就拿ID来说,tableRowWidth循环两次,第一次命中,设置了width,但是第二次没有命中,又把widths设置为了空。(ps:你这个tableRowWidth.length > 0的判断没报错吗)
函数改成下面这样
rowWidth(val) { let item = this.allTableConfig.tableRowWidth.find(u => u.title === val)
return item ? (item.width || '') : ''
}
以上是 请问这个给element ui动态赋值列宽度的函数 有什么问题呀 求解 的全部内容, 来源链接: utcz.com/p/935956.html