前言

  本人并不是前端开发人员,不过前端的界面和交互也没少写。以下整理一下我在使用elementUI过程中遇到的问题和对应的解决方案。

正文

1.表格字段过长省略

  elmentUI的table-column有提供属性 show-overflow-tooltip 只要在对应的字段上设置为true,则文本超出部分就会用省略号替代,并且鼠标移至其上时,可查看完整信息。

2.如何获取行数据作为方法参数?

  如果要为表格的每一行都添加操作按钮,如删除。这些删除按钮绑定的是同一个方法,那么如何区分是谁调用的呢,答案就是在方法中传入参数,而这些参数就是在渲染的时候写死在@click的方法参数里面。获取本行数据的方法就是scope.row.xxx,其中xxx就是本行数据的某一个属性。如:@click="delete(scope.row.id)

3.<el-dropdown-item>如何绑定事件?

  发现<el-dropdown-item>指定@click是没有响应的。官方的使用方法是,在command属性指定操作命令,然后在<el-menu>里面制定用于处理command的操作方法,例如@command="handleCommand",然后在里面类似做switch的操作,即根据不同的值来进行对应的操作。还有就是command可以直接就是方法名,然后在handleCommand方法里面,这样调用:this[command]()。这样就是直接调用methods方法集中的对应方法。

  但是,如果方法需要传递参数呢,用这种方法就不好做了。总不能再在这个command字符串中去把方法名和参数分别解析出来吧,那太麻烦了。解决方法就是@click.native="func",这种方式可以直接调用methods方法集中的对应方法,传参自然就没问题了。

4.如何通过代码关闭message提示?

  一般我抛出提示信息,是直接this.$message。但是存在这样的情境,即我完成了一个操作后,这个提示应该被立即关闭,而不是等它超时消失。答案就是,this.$message实际上会返回message对象的引用,那么我们定义一个变量来存这个引用,然后在需要的使用调用close方法即可。如  messageHandle = this.$message(...)     messageHandle.close()

5.如何动态修改下拉框的可选项?

  有些时候,当前下拉框的选项取决于前一个下拉框的选中项,这时候就需要动态变动可选项。其中下来框的可选项<el-option>一般都是通过v-for渲染的。如<el-option v-for="item in items" ....>。那么动态修改可选项的话,直接修改要遍历的数组就可以了,即修改items数组的内容就可以了。另外如果当前下拉选项由上一个下来框的选中值决定,那么上一个下来框就可以在@change方法里面进行这个操作。

6.formatter的使用

  有些时候表格数据的展示,不能直接用从后台获取到的数据,需要进行一定的修改,或者说格式化。那么这个时候,就需要用到formatter。formatter有三个参数,依次是row,column,cellValue。

  row是一行数据,可以通过这个参数获取到其他列的信息。

  column由于没有相关的文档,不太了解,应该就是列的信息。只知道column.property获取到的就是这个列的key。

  cellValue是当前单元格根据key从row中获取到的值。如果没有任何处理,单元格显示的就是这个值。注意了,有些时候,key对应的value可能不是值,而是对象。那这时候界面是无法直接打印对象的,界面显示就会是undefined。例如Mongo文档的toJson字符串返回的是这样的:(_id和long类型的变量返回的不是直接的值)

  {

    “_id”:{"$oid":"叽叽歪歪"},

    "field1":"xxxx",

    "field2":{"$numberLong":"12345"},

    "field3":123

  }

  formatter方法是,针对列的。一列下来共用的是同一个方法。

7.表格不能显示bool值的BUG

  这是elementUI的bug,单元格什么都不显示。官方说是不推荐直接显示布尔值,说是没什么意义。那么只能格式化了,但是如果你不想转换成什么“YES/NO”,"通过/未通过”,而是直接打印ture/false的话。那就是把bool值转成字符串返回就可以了。就是利用前面的formatter。return String(cellValue);

------------------2019年1月4日补充------------------------------------------------------

8.el-select下拉选项把v-for中的item作为value,无法再次选中?

  如果直接把v-for="item in items"中的item作为value,则选中一次后,下拉选项就不能在改了。页面显示的是所有选项都是选中状态。个人认为应该是select无法比较对象之间的不同,解决方法是在<el-select>中添加属性value-key,指明用item中的哪个字段作为key,例如:item有个字段叫id,那就可以这样写<el-select value-key="id" ...>。这样就可以把item作为选项的value了。而且选中后也不会有错。

9.数据绑定带来的问题

  对一行数据进行编辑,一般是把这一行数据获取到,然后复制给对话框绑定字段,然后在对话框内修改保存。但是,可能出现这种情况,即操作人修改了内容,但是没有保存而是取消了。由于对象的赋值是引用赋值,修改的就是这一行的绑定数据。这就带来问题了,即我明明没有保存,怎么表格那行数据却变了,这会给用户带来困惑。有一种方法是把这行的每个字段逐个复制给对话框绑定对象,这样比较麻烦,另一种就是深度拷贝,简单的做法就是JSON.parse(JSON.stringify(xxx))。这样解析出来的就是一个全新的对象。

10.如何引入第三方图标库

  ElementUI的图标实在是太少了,完全不够用。想要引入第三方图标的话,首推Iconfont。主要是其搜索和打包方便。做法就是,进入阿里图标库,搜索想要的图标保存,然后建一个项目(其实就是一个文件夹),全部放在里面。最后再统一下载。由于现在大部分前端项目都是vue-cli脚手架搭建的,所以下载后的压缩包的内容,直接解压到asset/font目录下即可。使用的话,基类css icon-font + 图标对应样式。例如 <i class="iconfont icon-xxx"></i>。

【API知识】ElementUI一些问题的解决方案的更多相关文章

  1. Vue.js 2.x API 知识梳理(一) 全局配置

    Vue.js 2.x API 知识梳理(一) 全局配置 Vue.config是一个对象,包含Vue的全局配置.可以在启动应用之前修改指定属性. 这里不是指的@vue/cli的vue.config.js ...

  2. Selenium WebDriver Api 知识梳理

    之前一直没有系统的梳理WebDriver Api的相关知识,今天借此机会整理一下. 1.页面元素定位 1.1.8种常用定位方法 # id定位 driver.find_element_by_id() # ...

  3. ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案

    [2009.2.18补注]这个问题在SP1 for Linux中修复,SP1 for Windows下问题更加严重,如果打了SP1 for Windows,还想使用REST服务,就必须使用Linux或 ...

  4. 找不到 cucumber.api.cli.Main 的报错解决方案

    最近玩IDEA,发现导入的项目有问题,报了一个“找不到或者不存在cucumber.api.cli.Main”的错误. 后来发现是新版的IDEA在导入时没有提示,以至于我没有配置项目对应的Tomcat服 ...

  5. ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件

    前言: 从开始学习Vue到使用element-ui-admin已经有将近快两年的时间了,在之前的开发中使用element-ui上传组件el-upload都是直接使用文件选取后立即选择上传,今天刚好做了 ...

  6. 项目中的web api知识总结

    最近在做公司的项目,自己负责webapi的框架的搭建与开发,最近很忙,一直没时间对工作中遇到的知识点缺少个总结,现总结一下,对自己是个提升,如果个人的小点点小总结能对博友有帮助那也是善莫大焉. (1) ...

  7. REST API 基于ACCESS TOKEN 的权限解决方案

    REST 设计原则是statelessness的,而且但客户端是APP时,从APP发起的请求,不是基于bowers,无法带相同的sessionid,所以比较好的方案是每次请求都带一个accesstok ...

  8. MAC OS X API知识摘抄

    本文为信息为网上各个地方收集整理Carbon和Cocoa,Toolbox,POSIX,JAVA并列成为Mac OS X五个主要的API.与Cocoa相较之下,Carbon是非物件导向(Procedur ...

  9. 【API知识】RestTemplate的使用

    前言 在某种情况下,后台服务可能需要访问另一台服务器的REST接口.以前估计不少人用的都是HttpRequest类来着,结合Paser解析JSON格式的Body.现在Spring Boot的Web S ...

随机推荐

  1. javaweb开发.页面中文乱码问题

    1.设置eclips , window->Preferences->web->JSP Files中的Encoding选项为UTF-8 2.修改jsp文件头部为UTF-8 <%@ ...

  2. springmvc mybatis shiro构建cms系统

    开发语言: java.ios.android 部署平台: linux.window jdk版本:JDK1.7以上版本 开发工具: eclipse.idea等 服务器中间件:Tomcat 6.7.Jbo ...

  3. Java之IO流总结

    IO流·Java流式输入/输出原理·Java流类的分类·输入/输出流类·常见的节点流和处理流·文件流·缓冲流·转换流·数据流·Print流·Object流 ①Java流式输入/输出原理         ...

  4. linux就该这么学,第十天了

    今天老师主要让要考试的提前预习课程了,提前预习, 今天讲了,防火墙,iptable.firewall-config,firewall-cmd   防火墙和网卡的配置方法,四种,1配置文件方法,主要开启 ...

  5. Something of HTTP

    学习发现所需且所欠知识: 参考:  1.一堆博客   2.HTTP图解(链接奉上,自取)提取码: n6jq http简介 http返回状态码 http方法(点击查看) GET POST PATCH H ...

  6. Codeforces Round #547 (Div. 3) F 贪心 + 离散化

    https://codeforces.com/contest/1141/problem/F2 题意 一个大小为n的数组a[],问最多有多少个不相交的区间和相等 题解 离散化用值来做,贪心选择较前的区间 ...

  7. Win7 VS2015 NASM汇编语言环境配置

    参考了以下两个博客文章 http://blog.csdn.net/x356982611/article/details/51260841 http://www.cnblogs.com/antonioz ...

  8. C++ MFC棋牌类小游戏day3

    今天开始设计小人棋子. 画法跟画虎一样,唯一不一样的是小人在刚开始会有重叠的情况,所以画起来可能比虎的棋子能够难一点. 我打算用Location结构体中的num来标记每个棋盘坐标存在棋子的个数,isH ...

  9. Jetbrain Pycharm Theme

    https://github.com/ChrisRM/material-theme-jetbrains

  10. shp文件和地理数据库文件的区别

    存储文件结构不同.所能进行的计算也不同. https://blog.csdn.net/lucahan/article/details/51761610 对数据库操作更快更方便,如何证明?尤其是数据量比 ...