背景
在之前一直是从事的C端的前端开发工作,在开始中也很少用一些框架(Vant、Mint等),也有三四年没有做过PC的项目了。新的工作方向是偏B端的后台系统,一些框架(Element-ui、echarts等)和坑都不太了解,以此来做些记录,同时也希望能够帮助到和我有相同困扰的Developer。
问题记录
-
form 表单校验问题
select 校验 保持初始值和接口返回的默认值类型一样 trigger: 'change'
rules:{ sex: [ { required: true, message: '请选择性别', trigger: 'change' } ] }
-
el-dialog 组件 在2.0 和 3.0 是否显示的属性不同
:visible.sync=""
v-model="dialogVisible"
-
处理table数据且是循环渲染的。 可以用插槽 scope
<el-table-column prop="status" label=""> <template #default="scope"> <div>{{scope.row.status | verifyName}}</div> </template> </el-table-column>
-
el-upload 2.0 上传图片
-
<el-upload :disabled= "isDisabled" :action="uploadActionUrl" :data="uploadData" :headers="requestHeader" :before-upload="beforeUpload" :on-success="function(response, file, fileList) { return handleSuccess(response, file, fileList)}" :file-list="picList()" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :limit="1" list-type="picture-card"> <em class="areaName" v-html="areaName"></em> </el-upload>
-
Element-plus 进度条
-
Element-plus 设置表格头部样式 header-row-class-name
<el-table :data="tableData" header-row-class-name="table-header" style="width: 100%"> </el-table>
-
el-input 校验输入数字(正则),两种方案:
- 输入时限制,用正则replace
- 输入后限制,通过设置 validator 来做信息提示
<el-input v-model="number" @input="this.value = this.value.replace(/[^\d^.]+/g,'')" placeholder="请输入内容"> </el-input>
-
element 自定义样式在本地生效,生产环境不生效
webpack打包顺序是从main.js 自上而下执行,导致自定义样式被Element样式覆盖导致,主要是下面两者的执行顺序,先执行ElementUI 再执行 router
import ElementUI from 'element-ui' import router from './router'
-
element resetFields()重置表单不生效问题
- 此方法用于将form表单的数据设置为初始值
- 而这个初始值是在form mounted生命周期被赋值上去的
- 所以,在 form mounted之前,如果给form表单赋值了,那么后面调用resetFields()都是无效的,因为form表单的初始值已经在 mounted 之前就被赋值了
场景:先编辑后新建
解决:在赋值的时候可用this.$nextTick(),这样就不会改变form表单的初始值了
// 初始化表单 data() { return { form: { cityId: null, cityName: '' } } } // 赋值 this.$nextTick(() => { this.form = { cityId: '12', cityName: '北京' } }) // 重置表达 this.$nextTick(() => { ;(this.$refs['formWork'] as any).resetFields() })
-
this.$route.push() 路由跳转页面数据不刷新的问题
可以在activated() 的时候更新数据