< 在elementUi中,实现el-input组件封装,适用于动态存储为数组 >


👉 前言

在前端开发时,我们偶尔需要在一个表单字段,存储为字符串数组,且需要动态控制存储大小。这就需要封装成一个小组件了,今天小温分享一个存储数组字符串组件。

原理较为简单,直接上源码吧!

👉 一、实现案例

> HTML模板

<el-col :span="24" style="height: auto!important;">
	<el-form-item label="计划开展内容" prop="jhkznr">
	   <div class="swiperBox">
	     <div
	       class="itemBox"
	       v-for="(item, index) in form.jhkznr"
	       :key="index"
	     >
	       <span class="input_box">
	         <el-input
	           resize="none"
	           type="textarea"
	           :autosize="{ minRows: 1, maxRows: 1}"
	           :placeholder="'请输入内容 <' + (index + 1) + '>'"
	           v-model="form.jhkznr[index]">
	         </el-input>
	       </span>
	       <span
	         class="btn_box"
	         v-if="form.jhkznr.length === (index + 1)"
	       >
	         <el-button
	           @click="form.jhkznr.push('')"
	           :plain="$root.themeHomeChange === '1'">增加</el-button>
	         <el-button
	           @click="form.jhkznr.pop()"
	           type="danger"
	           :plain="$root.themeHomeChange === '1'"
	           :disabled="form.jhkznr.length <= 1"
	         >删除</el-button>
	       </span>
	     </div>
	   </div>
	 </el-form-item>
</el-col>

form表单校验

var check_jhkznr = (rule, value, callback) => {
	if (value.length !== 0) {
		if(value.some(item => {
			return item.trim() == '';
		})) {
			return callback(new Error('请填写完整计划开展内容'));
		} else {
			return callback();
		}
	} else {
		return callback(new Error('数据出现错误,请重新打开'));
	}
};

jhkznr: [
	{ required: true, validator: check_jhkznr, trigger: 'blur' }
],

CSS样式

.el-col {
	/* 这个是其他表单项的高度,这个封装的组件,要自动高度 */
	height: 62px;
	margin-bottom: 13px;
	padding-top: 32px;
	position: relative;
	.swiperBox {
		width: calc(100%);
		min-height: 32px;
		max-height: 126px;
		overflow-y: auto;
		.itemBox {
			width: 100%;
			margin-bottom: 10px;
			display: flex;
			.input_box {
				width: 80%;
			}
			.btn_box {
				width: calc(20% - 20px);
				padding: 0 10px;
				display: flex;
				.el-button {
					width: 45%;
					margin: 0 auto;
				}
			}
		}
	}
}

案例较为简单,实际运用可以再加优化。

👉 二、效果演示

效果演示


往期内容 💨

🔥 < 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >

🔥 < 今日份小技巧:CSS文本超出指定条件以省略号代替 >

🔥 < 可视化图表技巧:实现发光(荧光)折线图 >

🔥 < 性能提升 Get √ :如何理解 “ 回流 ” 与 “ 重绘 ” ?如何合理的减少其出现呢 ? >

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术宅小温

你小小的鼓励,是我搬砖的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值