后端返回枚举数据结构:
前端html:
<label for="planGrade">预案级别</label> <select class="form-control enum" id="planGrade" name="planGrade" data-options="url:/manage/enum/getPlanGradeEnum"> <!-- <option value="1">当前在线</option> <option value="0">已下架</option>--> </select> </div>主要是在select 标签class上加了enum,以及自定义data-options属性
前端enum.js:
// 枚举下拉框初始化,并把枚举存到自定义枚举容器中 enumStorage = {}; initEnum(enumStorage); function initEnum(enumStorage) { $("select.enum").each(function () { let param = $(this).attr("data-options"); let enumName = ""+$(this).attr("name")+""; let url = param.replace("url:",""); // console.log(param.replace("url:","")) let options = ""; let itemStorage = {}; doGet(url,(data)=>{ $.each(data,function(index,element) { itemStorage[element.code] = element.desc; options += "<option value="+element.code+">"+element.desc+"</option>"; }); enumStorage[enumName] = itemStorage; $(this).html(options); }); } ) }最终图示:
最后:如果是像vue,react 组件式的前端框架,可以抽取代码端作为组件,然后页面向组件传参,做成通用的下拉框选择器。