公司重构管理系统,框架定了vue,UI在element和iview之间选,element样式被吐槽丑,于是选了iview,但是,,这个坑多啊。。。

废话少说,罗列了iview中容易出错或者懵逼的一些地方,希望后来的老哥们少费点头发。

#环境:vue-2.5, iview-3.0.1#

避免你浪费时间,先列出要点:

1,重置表单;

2,校验表单;

3,  Table相关;

4,select相关。

1,重置表单

1)单独重置某一项:

1
2
3
4
5
this.$refs[name].fields.forEach(function (e) {
      if (e.prop == 'abc') {
          e.resetField()
      }
})

2)全部重置:

1
this.$refs[name].resetFields();

2,校验表单

1)单独校验某一项:

1
this.$refs['formAdd'].validateField('xxx');

2)整个表单全部校验:

1
this.$refs[name].validate(callback);

3)表单验证整数的规则:

1
2
3
4
5
6
ruleValidate: {
    day: [
          { required: true, message: '请输入,必填', trigger: 'blur' },
          { type: 'integer', min: 0, max: 60, message: '必须是介于0和60之间的整数', trigger: 'blur', transform: value => +value }
        ]
} 

4)  自定义校验表单:

1
2
3
4
5
6
7
8
9
10
11
const validateTest = (rule, value, callback) => {
      if (value.length === 0) {
        return callback(new Error('请选择,必选'));
      }
      callback();
    };
 
// 在验证规则ruleValidate里添加
test: [
          {required: true, validator: validateTest, trigger: "blur"}
      ]

更多详细规则可以查看async-validator

3,  Table相关

某项的内容不是单纯的文本,需要显示html或者转换状态时,有二种方法。

1)在columns数组中使用render:

1
2
3
4
5
6
7
8
9
{ title: '状态',
          align: 'left',
          key: 'status',
          render: (h, params) => {
            let type = params.row.status;
            if (type === 1) return h('div''ok');
            return h('div''不ok');
          }
  }

2)在columns数组中给该项添加type: 'html':

1
{ title: 'banner', align: 'center', key: 'banner',  type: 'html' } 
    然后在获取数据时,将特定项转换成需要的html
1
2
3
4
5
6
7
list.map(item => {
        let str = '';
        item.content.map(i => {
          str += '<p>' '+ i.title + '</p>';
        });
        item.content = str;
     });

  

4,select相关

1
<Select ref="select"></Select>

1) 给select赋初始值,仅在 filterable="true" 时有效:

1
this.$refs.select.setQuery('abc');

某些版本的iview会导致下拉列表弹出,此时可以通过点击失焦,收起下拉列表:

1
this.$refs.tables.$el.click();

2) 清空单选项,仅在 clearable="true" 时有效:

1
this.$refs.select.clearSingleSelect();

3)手动清空select的值:

1
this.$refs.select.query = ''

select有个坑,用remote-method远程过滤时,输入关键字得到列表,删除关键字时,每次删除都会请求一次,全部删完后不会发起请求,列表还缓存着最后一个关键字得到到数据。暂时没找到比较好办法。

好了,比较实用的都大概在这里了,后续如果有新的坑,会继续加在这里。

iview 踩坑之旅的更多相关文章

  1. 微信小程序之mpvue+iview踩坑之旅

    因为之前参照微信的原生的文档写过一些小程序的demo,写的过程比较繁琐,后来出了美团的mpvue,可以直接使用vue开发,其他的不作对比,这篇文章记录一下踩坑之旅. 参照mpvue http://mp ...

  2. 我的微信小程序入门踩坑之旅

    前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...

  3. vue+ vue-router + webpack 踩坑之旅

    说是踩坑之旅 其实是最近在思考一些问题 然后想实现方案的时候,就慢慢的查到这些方案   老司机可以忽略下面的内容了 1)起因  考虑到数据分离的问题  因为server是express搭的   自然少 ...

  4. vue踩坑之旅 -- computed watch

    vue踩坑之旅 -- computed watch 经常在使用vue初始化组件时,会报一些莫名其妙的错误,或者,数据明明有数据,确还是拿不到,这是多么痛苦而又令人忍不住抓耳挠腮,捶胸顿足啊 技术点 v ...

  5. Python踩坑之旅其一杀不死的Shell子进程

    目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 坑后扩展 1.4.1 扩展知识 1.4.1 技术关键字 1.5 填坑总结 1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程 ...

  6. Python 踩坑之旅进程篇其三pgid是个什么鬼 (子进程\子孙进程无法kill 退出的解法)

    目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 Github: https: ...

  7. [代码修订版] Python 踩坑之旅 [进程篇其四] 踩透 uid euid suid gid egid sgid的坑坑洼洼

    目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 公 ...

  8. CentOS7使用tar.gz包安装MySql的踩坑之旅

    由于客户的CentOS服务器没有安装yum工具,只能通过下载tar.gz包安装mysql,于是跟着万能的百度开启了漫漫踩坑之旅: 1.下载mysql-5.6.33-linux-glibc2.5-x86 ...

  9. EasyTrader踩坑之旅总结

    ​ easytrader是用python写的可以调用主要券商完成自动化炒股的一个软件 ,但我用的是同花顺,在研究过程中,发现同花顺暂时调不通.后来搜索发现thstrade的源码作者说是easytrad ...

随机推荐

  1. bootstrap 学习 ---css样式学习

    bootstrap 适用于响应式布局,移动设备优先的web项目 1.学习bootstrap需要引入bootstrap的css,jquery,bootstrap的js,注意:jquery文件必须在boo ...

  2. BZOJ3566 [SHOI2014]概率充电器 (树形DP&概率DP)

    3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...

  3. 三角插值的 Fourier 系数推导

    给定 $k$ 个互不相同的复数 $x_0,\cdots,x_{k-1}$,以及 $k$ 个复数$y_0,\cdots,y_{k-1}$.我们知道存在唯一的复系数 $k-1$ 次多项式$$\mathca ...

  4. 4.Redis持久化方案

    1.1 RDB持久化 RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘. RDB是Redis默认采用的持久化方式. ...

  5. JavaScript 简介与语法

    一.JavaScript简介 ).head里面 ).body里面 (在body内最为严谨) ).</html>之后 //程序上来要执行的部分 [2]三个常用对话框 alert()警告对话框 ...

  6. 科技报告|AD报告|DTIC|PB报告|STAR|ERA|NTIS|DTIC|DOE|EPA|NASA |JPL|

    信息检索-科技报告是灰色文献获取渠道有限. 技术论文中因保密需要,会删除关键性技术. AD报告也产生较早,1951年开始出版.现由美国国防技术情报中心(DTIC:Defence Technical I ...

  7. IntelliJ IDEA 的便捷操作性

    快捷键 说明 IntelliJ IDEA 的便捷操作性,快捷键的功劳占了一大半,对于各个快捷键组合请认真对待.IntelliJ IDEA 本身的设计思维是提倡键盘优先于鼠标的,所以各种快捷键组合层出不 ...

  8. 升级mongodb数据库2.6.6到3.0.3,切换引擎,主从同步数据

    只升级mongodb的版本极为简单,更新/替换 bin/目录下的可执行文件即可. debian和osx上的升级,按步骤来,没什么好说的. http://docs.mongodb.org/manual/ ...

  9. python--防止SQL注入

    from pymysql import * def main(): # 创建Connextion连接 conn = connect(host='localhost', port=3306, user= ...

  10. reduced penetrance|COPE-PCG

    生物医学大数据 Case study 由Human genome project提出之后,提出的精准医学.它的初衷是将数据standard后easy应用,我国重要重在疾病预警和疗效评价. 在疾病预警上 ...