最近在开发我的项目,用到了 element-ui 的多选框性能,因为前端渲染的字段和提交给后端的字段不统一,还是参考了其余的我的项目中的性能,才实现。上面记录一下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>element-ui 中 Checkbox 多选框应用后端返回的数据 </title>
<!-- 引入 element-ui 的款式,-->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
<!-- 引入 element 的组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<style>
* {
margin: 0;
padding: 0;
}
#app {margin: 100px;}
</style>
</head>
<body>
<div id="app">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="流动性质">
<el-checkbox-group v-model="form.checkList">
<el-checkbox label="1"> 上海 </el-checkbox>
<el-checkbox label="2"> 南京 </el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-button type="primary" @click="onSubmit"> 立刻创立 </el-button>
</el-form-item>
</el-form>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
// 模仿 ajax 返回的数据
ajaxDate: {
// city1 返回 0 的时候应该选中,返回空字符串 '' 应该不选中
city1: '',
// city1 返回 0 的时候应该选中,返回空字符串 '' 应该不选中
city2: '',
},
// 本地渲染
form: {checkList: [],
}
}
},
created() {
// 模仿 ajax 返回的数据
setTimeout(() => {this.ajaxDate.city1 == '0' ? this.form.checkList.push('1') : '';
this.ajaxDate.city2 == '0' ? this.form.checkList.push('2') : '';
}, 500)
},
methods: {
// 本地渲染的值转换为要传递给后端定义的值
checkConvertFun(dataList, val) {if (dataList && dataList.length > 0) {return dataList.indexOf(val) > -1 ? '0' : ''
} else {return ''}
},
// 表单提交
onSubmit() {const city1 = this.checkConvertFun(this.form.checkList, '1');
const city2 = this.checkConvertFun(this.form.checkList, '2');
const param = {...this.ajaxDate, ...{ city1, city2} };
console.log(param, '传递 ajax 的参数')
}
}
})
</script>
</body>
</html>