ElementUI组件系列解读之<Input>

129 阅读1分钟

EL-input

实现的功能:

1. 输入内容

2. 双向绑定

3. 密码框

4. 内容清空

5. 带icon

6. Textarea文本域

7. 字数限制

8. 带搜索等

9. 自动适应文本高度

10. 带建议模板的

input事件区别

图片51.png

由于在源码中el-input和el-textarea是共用的因此这里采取分开解读的方式

首先看它们最外层div的布局

图片52.png

再看看el-input的部分

图片53.png

图片54.png

图片55.png  

可以看到本身el-input实现的功能并不多,但是因为它设置前置和后置内容的插槽,就使得该组件的功能得以被拓展,比如在前置插个select 再配个后置插个button等****

注意下:有人疑惑为啥在Input没有看到value和placeholder的bind呢?其实它通过了v-bind:$attrs已经一起都绑定过来了

(v-bind="$attrs" 可以跨层级传递props 并且将没有显式声明的Props也绑定到input中这里将父组件的value也bind在了input上了)

缺点:就是有些属性会莫名奇妙的被使用

接下来我们一个个功能过下:

第一个功能:内容清除

图片56.png

图片57.png

图片58.png

图片59.png 可以看到非常简单,就不说了。

第二个功能:密码显示

图片60.png

图片61.png

图片62.png

图片63.png

注意下:下面这种写法是相当于双重if判断

:type="showPassword ? (passwordVisible ? 'text': 'password') : type"

 

第三个功能:字数显示

图片64.png

这里就两个变量需要获取下  textLength(输入框内文字的个数)和upperLimit(限制的个数)

图片65.png

图片66.png

Props传入  超过了input就不会显示超出的内容

图片67.png

第四个功能:表单检验显示

图片68.png

图片69.png

状态以及icon的类名获取很简洁