2.sort-method:属性这个属性接收一个方法作为排序依据,和Array.sort()表现一致。// 如果升序排序则Array.sort(function(a, b) { return a - b})// 如果降序排序则Array.sort(function(a, b) { return b - a})如果是_el-table 排序">
当前位置:   article > 正文

elementUI el-table表格列排序的三种方法_el-table 排序

el-table 排序

1. 官方排序

<el-table-column sortable prop="test" label="测试" align="center">

2.sort-method:属性

这个属性接收一个方法作为排序依据,和Array.sort()表现一致。

  1. // 如果升序排序则
  2. Array.sort(function(a, b) {
  3. return a - b
  4. })
  5. // 如果降序排序则
  6. Array.sort(function(a, b) {
  7. return b - a
  8. })

如果是对象组成的数组,需要按照对象的某个key的值进行排序,则可以按照下面的方式来进行

  1. Array.sort(function(obj1, obj2) {
  2. let val1 = obj1.key
  3. let val2 = obj2.key
  4. return val1 - val2
  5. })

下面是在实例中的应用

HTML部分

  1. <el-table :data="tableData">
  2. <el-table-column
  3. type="selection"
  4. ></el-table-column>
  5. <el-table-column label="项目编号" prop="id"></el-table-column>
  6. <el-table-column label="项目名称" prop="name"></el-table-column>
  7. <el-table-column label="到期时间" :sortable="true" :sort-method="sortByDate">
  8. <template slot-scope="scope">
  9. {{scope.row.deadline | deadline}}
  10. </template>
  11. </el-table-column>
  12. <el-table-column label="赏金" prop="price"></el-table-column>
  13. <el-table-column label="操作">
  14. <template slot-scope="scope">
  15. <a href="javascript:;">[删除]</a>
  16. </template>
  17. </el-table-column>
  18. </el-table>

js

  1. export default {
  2. data() {
  3. return {
  4. tableData: [
  5. {
  6. type: '平面设计',
  7. id: '477760',
  8. name: 'logo设计',
  9. price: 10000,
  10. deadline: 1540260459981,
  11. url: 'javascript:;',
  12. },{
  13. type: '整站建设',
  14. id: '451534',
  15. name: '信息网站开发',
  16. price: 10000,
  17. deadline: 1544260459981,
  18. url: 'javascript:;',
  19. },{
  20. type: 'IOS',
  21. id: '789412',
  22. name: '信息网站开发',
  23. price: 10000,
  24. deadline: 1543260459981,
  25. url: 'javascript:;',
  26. },{
  27. type: 'UI设计',
  28. id: '564325',
  29. name: '信息网站开发',
  30. price: 10000,
  31. deadline: 1541260459981,
  32. url: 'javascript:;',
  33. },{
  34. type: 'VI设计',
  35. id: '458252',
  36. name: 'VI优化设计',
  37. price: 10000,
  38. deadline: 1545260459981,
  39. url: 'javascript:;',
  40. },{
  41. type: 'Android',
  42. id: '456782',
  43. name: 'Android开发',
  44. price: 10000,
  45. deadline: 1544860459981,
  46. url: 'javascript:;',
  47. }
  48. ]
  49. }
  50. },
  51. filters: {
  52. deadline(value) {
  53. let now = new Date().getTime()
  54. if(value - now < 0) {
  55. return '已结束'
  56. } else {
  57. let date = new Date(value)
  58. let Y = date.getFullYear()
  59. let M = date.getMonth() + 1
  60. let D = date.getDate()
  61. return `${Y}-${M}-${D}`
  62. }
  63. }
  64. },
  65. methods: {
  66. sortByDate(obj1, obj2) {
  67. let val1 = obj1.deadline
  68. let val2 = obj2.deadline
  69. return val1 - val2
  70. }
  71. }
  72. }

3.sort-by

这个属性是指定数据按照哪个属性进行排序,比如上面的例子中如果要按照时间戳来排序可以直接把:sort-method=”sortByDate”换成sort-by=”deadline”就能达到同样的效果了,如果使用了sort-by就不能使用sort-method了,否则不会生效。

值得注意的一点是sort-method是属性不是方法,要写成”:sort-method=’sortfunc'”而不能写成”@sort-method=’sortfunc'”,另外两个排序方法都需要将sortable设为true才能生效

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/117995
推荐阅读
相关标签
  

闽ICP备14008679号