ElementUI使用随记

1、el-select中:remote-method默认的参数为输入的值,添加自定义参数,可以返回一个匿名函数来访问内部变量可以在外部调用中获取到内部的变量值,而且每次调用完才会消失在栈内存中。

:remote-method=“(val) => remotePeopleMethod(val, otherVal)”

<el-select
 	v-model="renovation.inspector"
   filterable
   remote
   reserve-keyword
   placeholder="请输入员工姓名"
   :remote-method="(val) => remotePeopleMethod(val, otherVal)"
   :loading="loadingPeople"
   value-key="name">
   <el-option
     v-for="(item,index) in peoplesList"
     :key="index"
     :label="item.realName"
     :value="item.userId">
   </el-option>
 </el-select>
 js:
remotePeopleMethod (val,  otherVal) {
	console.log(val,  otherVal)
}

2、el-select中若value为数值型,正确进行回显 :value="0"

<el-select v-model="formData.companyId" size="mini" placeholder="请选择" style="width: 100%">
   <el-option label="全公司通用" :value="0"></el-option>
   <el-option v-for="item in companysData" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>

3、表单验证规则动态修改后自动进行验证

this.$refs.formName.validateField('licenseCode') // ‘licenseCode’: prop属性值,form的ref为‘formName’

4、表单验证,清空某个表单元素的验证提示;清空form数据:resetFields

this.$refs[refName].clearValidate() // ref:某元素的ref值 (PS:$refs.refName)

5、上一步中清空表单的事件不起作用,原因可能有以下几种:

a:检查 form标签中绑定的数据对象是否正确,要用 :model,不可用v-model;

<el-form :model="dataForm" ref="dataForm" label-width="70px">
</el-form>

b:查看每个el-form-item标签后是否添加对应的prop属性,要与表单元素绑定(v-model)的数据一致;ref 要与 v-model="xxx"中的 一致;

<el-form-item label="真实姓名" size="mini" prop="realName">
  <el-input v-model="dataForm.realName" placeholder="真实姓名" maxlength="16"></el-input>
</el-form-item>

6、表单校验 —— 动态添加的列表型元素的rules校验

实例:动态添加删除输入框,输入框格式为必填与特殊校验

<el-form class="confirmForm" :model="formData" ref="formData" label-width="auto" :rules="rules">
  <el-row :gutter="10">
	<div v-for="(item, index) in formData.oldFkRecordNoList" :key="index">
	  <el-form-item size="mini" style="position: relative;" :prop="'oldFkRecordNoList.' + index + '.id'" :rules="rules.fkRecordNo">
	    <el-input v-model="item.id" size="mini" onkeyup="value=value.toUpperCase()" maxlength="16"></el-input>
	    <el-button type="danger" class="addBtn" icon="el-icon-minus" @click="toRemove(index)" circle></el-button>
	  </el-form-item>
	</div>
  </el-row>
</el-form>

// script data
export default {
  data () {
  	return {
  	  rules: {
		 fkRecordNo: [
		    { required: true, message: '必填', trigger: 'blur' },
		    { validator: notSpecial, trigger: ['blur'] }
		  ]
		},
		formData: {
		  oldFkRecordNoList: []
		}
  	}
  }
}

注: for 循环的为form表单中的list v-for="(item, index) in formData.oldFkRecordNoList" :key="index",动态添加的prop必须为 :prop :prop="'oldFkRecordNoList.' + index + '.id'"

7、el-input 搜索框在手机端的使用

使用软键盘启动搜索事件。
用: keyup.enter.native,此时搜索时页面会整个刷新,所以需要给 el-form 添加阻止默认提交事件 @submit.native.prevent

<el-form :model="search" ref="search" label-width="45px" class="search-form" @submit.native.prevent>
	<el-input type="text" v-model="search.id" name='search' placeholder="请输入查询的维修单号" @keyup.enter.native="getDatas"></el-input>
</el-form>
        

8、更改element 元素样式

如果是css,可以使用 /deep/::v-deep,如果是scss,只能用 ::v-deep

// css 或 scss
/deep/ .el-select {
	width: 100%;
}
// scss
::v-deep .el-select {
	width: 100%;
}

9、table表格中获取当前行的index

<template slot-scope='{row, $index}'>
	{{$index}}
</template>

10、table 选择selection中隐藏选中框,显示选择label

直接样式控制

.el-table /deep/.DisabledSelection .cell .el-checkbox__inner{
  display:none;
  position:relative;
}
.el-table /deep/.DisabledSelection .cell:before{
  content:"选择";
  position:absolute;
  right 11px;
}

11、table选择回显(单选),多选多一个批量匹配列表数据

主要执行方法是:this.$refs.tableRef.toggleRoSelection(row)

父组件中:index.vue

checkRegulation () {
	this.regulationVisible = true;
	this.$nextTick(() => {
		this.$refs.regulationRef.init(this.selectedRegulation)
	})
}

table.vue

<el-table
	:data='tableList'
	ref='tableRef'
	:row-key='(row) => {return row.flowId}'
	@selection-change='handleSelectionChange'
>
 <el-table-column type='selection' :reserve-selection='true'></el-table-column>
 ....
</el-table>

// js
methods: {
	async init(row) {
		this.initInfo = JSON.parse(JSON.stringify(row));
		await this.getList(); // 获取列表数据
		this.$nextTick(() => {
			this.tableList.forEach((row) => {
				if (row.flowId === this.initInfo.flowId) {
					this.$refs.tableRef.toggleRowSelection(row, true);
					return;
				}
			})
		})	
	},
	handleSelectionChange (val) {
		if (val.length > 1) { // 因为此处单选
			this.$refs.tableRef.clearSelection();
			this.$nextTick(() => {
				this.$refs.tableRef.toggleRowSelection(val.pop());
			})
		}
		this.multipleSelection = val;
	}
}

12、el-menu 做路由跳转时,在有的浏览器报错:Loading chunk 12 failed.

是因为没有用正确的el-menu,而是在里面嵌套了 <router-link>。
正确的使用 el-menu的 routerroute 属性

 <el-menu class="el-menu-demo" mode="horizontal"
   :default-active="currentPath" :router="true">
     <el-menu-item index="home" :route="{path: '/home'}">首页</el-menu-item>
     ...
</el-menu>

13、二次封装上传组件时,当上传格式错误,但仍旧走了remove方法

onRemove(file,fileList){
    if(file.status == 'success'){
        //删除后改变某些状态的代码
    }
    if(file.status == 'ready'){
        //这里应该就是before-upload中返回false时的状况了,还有没有别的状况,未知
    }        
}

14、input 去掉空格

<el-input v-model.trim="input"/>
或者
<el-input type="textarea" v-model="input" @input="input= input.replace(/[ ]/g,'')"></el-input>

15、el-table 重新渲染组件

利用 el-table 的 key 值,设置为一个时间戳,每次获取完数据之后,判断key值发生了变化,会重新渲染组件;

<el-table
  v-loading="loading"
  :key="timeStamp"
   border
   :data="resultList"
 >
   <el-table-column prop="status" label="结果码"></el-table-column>
   ...
</el-table>
<script>
export default {
	data () {
		...
		timeStamp: ''
	},
	mounted () {
		this.timeStamp = new Date().getTime();
	},
	methods: {
		getData() {
			...
			registeAPI
	        .getOcrResultList(params)
	        .then((res) => {
	        	this.resultList = res.data;
	        	this.timeStamp = new Date().getTime();
	        	....
			})
		}
	}
	....
	
}
</script>

16、form 数据重置,必须在data form中初始过此参数(常用于表单清空);

Object.assign(this.$data.formInline, this.$options.data().formInline);
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值