Element-UI带icon的input框详解(事件传递自定义参数)

本文详细介绍了如何在Element-UI的input组件中添加图标,并通过`slot`和`slot-scope`属性实现事件绑定及传递自定义参数。文章探讨了三种方法,包括使用`prefix`和`suffix`属性、`<el-input>`的`slot`形式以及`<el-input>`的`slot-scope`形式,着重强调了第三种方法在传递参数和处理复杂需求时的优势,同时也提醒了使用该方法可能遇到的图标颜色问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实现方法

看过 官方文档 的同学应该知道有两种方法能够实现该需求。

1. prefix-iconsuffix-icon 属性

        prefix-iconsuffix-icon 属性能够在 el-input 组件首部和尾部增加显示图标。

<el-form-item label="用户名" prop="username">
	<el-input prefix-icon="el-icon-user" v-model="formData.username"></el-input>
</el-form-item>

        这种方式的优点就是代码量极少,只需要配置一个属性就可以有效果,缺点就是图标不能够配置点击事件
       既然如此,适合该方式的场景也就一目了然了:单纯用来装饰,增加美观性的场景。例如搜索框的最后可加一个搜索图标,或是用户名输入框前添加一个人员图标。

2. i 组件的 solt 形式

        采用插槽的形式也能够实现该需求。通过设置 solt 的属性值为 suffixprefix 能够控制图标在首部或是尾部显示。

<el-form-item label="用户名" prop="username">
	<el-input v-model="formData.username" prefix-icon="el-icon-search">
		<i slot="prefix" class="el-icon-user" @click="test"></i>
	</el-input>
</el-form-item>

        这种方式的灵活度比第一种要高的多,可以给图标绑定各种不同的事件
        我遇到的需求是用 input 框实现一个密码框,因为 password 这个关键词是很容易被有心人注意到并遭受攻击的,因此公司不允许使用密码框。在开发过程中我需要在输入框后放置一个小眼睛图标用来充当密码框,并且这个小按钮还得能够点击以切换密码明文密文。也正是这个需求引出了这种方式的缺点:无法在事件中传递自定义参数(也可能是是我水平有限,但我确实尝试了很多网上的办法都没办法传递自定义参数)

3. el-button 组件的 solt 形式

<el-form-item label="用户名" prop="username">
	<el-input v-model="formData.username" prefix-icon="el-icon-search">
		<el-button slot="suffix" type="text" icon="el-icon-view" @click="showPd('dbNumShow')"></el-button>
	</el-input>
</el-form-item>

        这种方式能够完美的实现我上面的需求,既能够给图标绑定事件,又能够在事件中传递自定义参数,这里的参数可以是字符串,也可以是对象,甚至可以是data中定义的数据,自由度极高,大家自行体会。但要注意,使用这种方式时会带来一个问题,图标的颜色会一直保持蓝色,需要大家自行调整样式。在此贴出我的代码供大家参考。

<style scoped>
.el-button--text {
  color: #606266;
}
.el-button:focus, .el-button:hover {
  color: #409EFF;
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值