vue+element踩坑记录(持续更新中)

一. el-input(输入框)

 

(1). 禁止中文输入

<el-input 
  v-model="userCode" 
  oninput="if(this.value)this.value=this.value.replace(/[\u4e00-\u9fa5]/g,'');">
</el-input>

(2). 禁止首尾空格

v-model.trim

(3). 禁止全部空格

onkeyup="this.value=this.value.replace(/\s+/g,'')"

二. el-select(下拉框)

(1). 使用时需要增加v-model,否则会报错需要必填一个value

(2). 如果绑定v-model时,需要使用绑定一个对象:

<el-select value-key="id">
  <el-option v-for="item in arrList" 
    :key="item.id" 
    :value="item" 
    :label="item.label">
  </el-option>
</el-select>

(3). 如果使用多选时,则将v-model的值修改成数组格式,回显则将字符串split(',')转成数组即可

三. el-form(表单)

(1). 表单校验

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  <el-form-item label="活动名称" prop="name">
    <el-input v-model="ruleForm.name"></el-input>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        ruleForm: {
          name: ''
        },
        rules: {
          name: [
            { required: true, message: '请输入活动名称', trigger: 'blur' },
            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
          ]
        }
      };
    }
  }
</script>

(2). 表单重置

this.$refs[表单的ref].resetFields();

四. el-rdopdown(下拉菜单)

子组件上绑定click事件时,用@click=‘fun’无法绑定成功 解决方案:使用DropDown组件绑定点击事件时,需要加 .native 才能绑定成功,即 @click.native=‘fun’ ,即可成功

五. el-date(日期框)

显示类型使用type

展示类型或者下发参数使用format或者value-format

(1). 设置选择今天及今天之后的日期

<el-date-picker
  v-model="value1"
  type="date"
  placeholder="选择日期"
  :picker-options="pickerOptions0">
</el-date-picker>
data (){
  return {
    pickerOptions0: {
      disabledDate(time) {
        return time.getTime() < Date.now() - 8.64e7;
      }
    }
  }
}

(2). 设置选择今天及今天以前的日期

data (){
  return {
    pickerOptions0: {
      disabledDate(time) {
        return time.getTime() < Date.now() - 8.64e6;
      }
    },
  }
}

(3). 有日期范围区间时,设置结束日期不能大于开始日期

<el-date-picker
  v-model="value1"
  type="date"
  placeholder="开始日期"
  :picker-options="pickerOptions0">
</el-date-picker>
<el-date-picker
  v-model="value2"
  type="date"
  placeholder="结束日期"
  :picker-options="pickerOptions1">
</el-date-picker>

data(){
  return {
    pickerOptions0: {
      disabledDate: (time) => {
        if (this.value2 != "") {
           return time.getTime() > Date.now() || time.getTime() > this.value2;
        } else {
           return time.getTime() > Date.now();
        }
      }
    },
    pickerOptions1: {
      disabledDate: (time) => {
         return time.getTime() < this.value1 || time.getTime() > Date.now();
      }
    }
  }
}

五. el-dialog(弹出框)

(1). 使用弹出框频繁嵌套时,页面置灰

增加append-to-body属性,将当前的弹出框增加到当前的body中

六. el-scrollbar(隐藏滚动条)

官网上并没有暴露出来这个组件,通过el-scrollbar包裹想要滚动的组件,然后在css样式文件里面,添加样式就可以了

首先,el-scrollbar组件的父级一定要有高度,其次el-scrollbar__thumb这个样式是设置滚动条的,不添加就没有滚动条了

<el-scrollbar style="height:100%">
	<div class="filter-tree"></div>
</el-scrollbar>

七:el-switch(开关)

字符串格式参数

<el-switch
  active-value='1'
  inactive-value='0'
  v-model="form.status"
  active-color="#13ce66"
  inactive-color="#ff4949"
></el-switch>

数字格式参数

<el-switch
  :active-value='1'
  :inactive-value='0'
  v-model="form.status"
  active-color="#13ce66"
  inactive-color="#ff4949"
></el-switch>

八:el-upload(上传文件)

自定义上传触发多次change事件解决方案(多选+自定义上传模式)

vue部分:

<el-upload
 :on-change="handleUpload"
 :on-remove="handleRemove"
 :auto-upload="false"
 :show-file-list="false"
 drag
 action="#"
 ref="upload"
 multiple
 style="display:none;"
 >
  <div class="el-upload__text">拖拽文件或点击上传</div>
</el-upload>

ts/js部分:

  // 附件上传
  private handleUpload(file, fileList) {
    let length = fileList.length;
    this.maxFileLength = Math.max(length, this.maxFileLength)
    setTimeout(() => {
      if (this.maxFileLength !== length) {
        return
      }
      fileList.forEach(item => {
        this.fileList.push(item.raw)
      })
    }, 0)
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值