前言
最近公司要做的项目基本都是后台管理,且业务越来越复杂和多变,我在这个过程中不再自己手写组件,一来开发效率低,二来容易有各种各样的问题,于是我采用了Element-UI来进行开发,在这个过程中,用到了很多组件库,记录一下心得和需要注意的地方。
注意事项
1.开发过程中一定要弄清楚版本号,不同版本对应的组件库数量不同,例如最新版的1.3.5有穿梭框组件,而上一版的1.2.9则没有,同时不同版本里组件的写法也是会略有不同。1.3.5版本的对话框demo在1.2.9版本里没有任何效果。
2.认真严格按照官方demo进行设置,不能只把精力放在template上,关于data的初始化设置也是必须的。如在Select组件,如果不设置data,则得不到正常的选择框效果。
3.form表单组件非常灵活,默认的必填选项,组件会自动在label前加上红色星号表明这是必填项,但是一旦是开发者自己定义的校验规则,则不带有红星号,为了样式统一,我一般全部采取自定义校验规则。
4.我在使用iView的时候遇到了一个场景,点击按钮,弹出弹窗,需要在弹窗里填写相应的字段进行提交,iView并没有去适配这个场景。但是在Element里,可以在弹窗(MessageBox)组件里进行填写和验证,但是也只适用于一般的邮箱电话的填写。如果是较为复杂的表单项,还是应该采取对话框(Dialog)的方式进行。
5.页码组件(Pagination)的总页数不是按照totalPage的方式来,而是按照总条数进行的,因为表格显示每一页的条数并不是固定的,所以使用总条数来计算总页数是更加准确的做法。
6.文件上传组件非常灵活,可以附带其他参数上传,整个上传过程有清晰的执行周期,根据每一个步骤的钩子函数可以定义相关的回调函数。在项目里遇到了一个场景,要同时上传两个name不同的文件和其他相关的文本字段,组件库只能做到一个name里传多个文件,但无法同时传两个不同name的文件。一个上传组件只能对应一个name。我采取的做法是先上传其他文本字段,服务器返回一个标志,然后将这个标志连同文件一起上传,第一个name的文件上传完毕后使用”on-success”钩子函数检测,成功后再上传第二个name的文件。整个过程若较慢,则用loading标志提醒用户等待。
7.对于多选框checkbox或者单选框radio,绑定的v-model一定要设置初始值,否则就无法显示勾选和反选的样式。
8.级联选择器很方便,但是都是在一个select里进行选择,如果场景要求多个单选select实现联动效果,则还是要使用单选select选择器,灵活处理选择器里内置的对象的数据结构。
9.默认的单项选择器Select都是会有一个“请选择”的空项,只有用户选择的时候才会有值。但是对于复杂的表单,我想省去这一个验证项,即初始化进入时该Select就有值,这个值是option里的第一项。那么就需要在data里设置。如果option是从后台获取的,整理好数据结构以后也一定要进行v-model的初始化设置。
10.日期选择器绑定的数据,并不是“所见即所得”。即你在日期选择器的输入框里看到了“2017-05-03”的字样时,它对应绑定的model并不是一个string类型的“2017-05-03”,而是一个date对象。这样如果后台接收date字段要求是string类型就无法正常进行。我的解决方法是使用日期选择器组件的“change”事件,因为用户一定要去选择日期,必然会触发这个事件,这个时候内置的event就是文本框里的string字段了,将这个event的值绑定到对应的data上即可。
如果以后发现了新的坑,我会继续补充