中秋之element部分技巧总结

639 阅读1分钟

“我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛

1、element的时间选择提交的格式为Fri Sep 07 2018 00:00:00 GMT+0800 (中国标准时间)

转化为 2020-01-11的格式 记得在datepicker中添加一句value-format=”yyyy-MM-dd”

<el-date-picker type="date" v-model="createdate" @change="formatTime" value-format="yyyy-MM-dd"  placeholder="选择时间"></el-date-picker>

2、动态循环复选框时,无法选中问题

this.menulist[index].sonList.map((item)=>{
    this.$set(item, 'checked', false); ---用vue的set属性赋值
})

3、el-form动态表单验证(v-if、v-show导致校验失效的bug)

当使用v-ifv-show来控制el-form-item的显示与隐藏时,会出现校验失效的bug。

  • 使用v-if:element在对form表单中带有prop属性的子组件进行校验规则绑定时,是在vue声明周期mounted完成的。
  • 而v-if用来切换的元素是会被销毁的,导致了v-if内的表单项,由于在mounted时期没有进行渲染,所以规则也没有绑定上。初始化时不符合显示条件的不会生成规则,导致后面切换条件,显示的输入框的校验不会生效
  • 使用v-show:初始化时会生成所有的规则,即使隐藏了也会进行规则校验

解决方法

(1)、使用v-if进行校验 每个v-if后面配置一个不同的key值,这样就可以了

(2)、自定义校验规则,喜欢动手的可以自己自定义校验

4、Vue+element table表格中如何禁用部分复选框

<el-table-column align="center" type="selection" :selectable='selectInit' width="55"/>

selectInit(row,index){
        if(row.status==2){
            return false  //不可勾选
        }else{    
            return true  //可勾选
        }
}

5、Element的表单验证规则,清空或填充数据如何避免自动触发

this.$nextTick(()=>{
      this.$refs['userInfo'].clearValidate();
 })

6、element-ui 接口返回有数据但是视图没有更新

1、vue 对象不允许在已创建的的实例上动态添加新的根级响应式属性 。(参考vue官网)

调用方法:Vue.set( target, key, value )

参数描述
target要更改的数据源(可以是对象或者数组)
key要更改的具体数据
value重新赋的值

如果非要这么做的话,我们可以使用 this.$set(),this.$set() 可以接收三个参数

  1. 要绑字的数据。
  2. 要添加或修改的属性名称。
  3. 要赋的值
this.$set(this.projectList, 'projectName', 'chenxuemin')  --针对对象的

this.$set(this.items, 0, { message: "更改one的值", id: "0" });--针对数组的

2、手动更新视图

它可以影响到本实例及本实中的 slot 插槽内容

this.$forceUpdate() // vm.$forceUpdate()