API知识ElementUI一些问题的解决方案

Posted 猫毛·波拿巴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了API知识ElementUI一些问题的解决方案相关的知识,希望对你有一定的参考价值。

前言

  本人并不是前端开发人员,不过前端的界面和交互也没少写。以下整理一下我在使用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);

以上是关于API知识ElementUI一些问题的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

登录综合案例02,退出完善,菜单权限,以及遇到的一些问题,前端使用vue+elementui+axios 后端 springboot+mybatis-plus+swagger2,

[vue ]滚动视图解决ElementUI NavMenu 导航菜单过长显示的问题

ElementUI表格合计项固定列 滚动条不可滑动

ElementUI表格合计项固定列 滚动条不可滑动

vue+elementUi条件渲染切换表格时单元格内容显示异常的问题及解决方法

记一次elementui表格组件问题