vue ts html 中如何遍历 Enum 类型构建页面结构
一、需求
定义了一个 Enum 用来标记菜单类型:
enum EnumMenuType {
'目录' = 1,
'菜单',
'按钮',
'外链'
}
你得 Enum 知道它的序号是随第一个定义的值自动增长的
现在想在 ElementUI 界面的 radio-group
中遍历它,不遍历的时候是这样使用:
<el-radio-group v-model="formMenu.type" placeholder="类型">
<el-radio :label="1">目录</el-radio>
<el-radio :label="2">菜单</el-radio>
<el-radio :label="3">按钮</el-radio>
<el-radio :label="4">外链</el-radio>
</el-radio-group>
二、实现 Enum 遍历值
1. Enum 遍历
你需要知道 Enum 在遍历的时候不光会遍历出对应的 Enum 名,还会遍历出值
for (let key in EnumMenuType){
console.log(key)
}
// 输出为
1
2
3
4
目录
菜单
按钮
外链
2. 过滤数字值
如果直接使用
<el-radio-group v-model="formMenu.type" placeholder="类型">
<el-radio v-for="key in EnumMenuType" :key="key" :label="key">
{{ EnumMenuType[key] }}
</el-radio>
</el-radio-group>
它会显示成这样:
所以需要过滤一下数字值,这里需要加一层 template 进行循环,再在里面再进行判断
<el-radio-group v-model="formMenu.type" placeholder="类型">
<template v-for="key in EnumMenuType" :key="key">
<el-radio v-if="isNaN(EnumMenuType[key])" :label="key">
{{ EnumMenuType[key] }}
</el-radio>
</template>
</el-radio-group>
3. 结果
这样就可以了