ElementUI之table排序

本文介绍ElementUI中Table组件的排序功能,包括默认排序方式及如何通过设置sortable属性来实现不同字段的排序,如按ID递减、姓名按拼音排序等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

elementui是一套非常好用的ui框架,经常用于与vue搭配使用。其中有一个table组件,以下对其排序属性做下笔记。为了简洁我就写在注释里了。

 

<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.0.11/lib/index.js"></script>
<div id="app">
  <template>
  //table的默认排序方式是按ID排序 顺序为递减 这里可以改成其他 比如 name age address
    <el-table :data="tableData" style="width: 100%" :default-sort="{prop: 'ID', order: 'descending'}">
    //设置sortable属性时出现排序按钮 数字为首按数组大小进行排序
      <el-table-column prop="ID" label="座号" sortable width="180">
      </el-table-column>
      //名称按符号--英文字母--拼音首字母排序 反之换序
      <el-table-column prop="name" label="姓名" sortable width="180">
      </el-table-column>
      //去掉sortable属性时 该项无法排序
      <el-table-column prop="age" label="年龄"  width="180">
      </el-table-column>
      <el-table-column prop="address" label="位置" :formatter="formatter">
      </el-table-column>
    </el-table>
  </template>
</div>

JavaScript部分:

 

 

var Main = {
    data() {
      return {
        tableData: [{
          ID: '12号',
          name: '李狗蛋',
          age:21,
          address: '广州市科学城'
        }, {
          ID: '13号',
          name: '黄二狗',
          age:18,
          address: '汕头市濠江区'
        }, {
          ID: '14号',
          name: '林二丫',
          age:19,
          address: '深圳市罗湖区'
        }, {
          ID: '15号',
          name: '陈大宝',
          age:20,
          address: '厦门市翔安区'
        }]
      }
    },
    methods: {
      formatter(row, column) {
        return row.address;
      }
    }
  }
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')

效果图

 


 

### 实现ElementUI Table中的拖动排序 为了实现在Element UI表格组件内的拖动排序功能,可以借助`sortablejs`库。此方法适用于Vue项目环境。 #### 安装依赖包 安装`sortablejs`作为项目的依赖项[^2]: ```bash npm install sortablejs --save ``` #### 导入并初始化SortableJS 在Vue组件内导入`SortabeJS`模块,并将其应用到指定的DOM元素上,在本案例中即为Element UI的Table组件实例所对应的DOM节点。确保当表格渲染完成之后再执行这一操作,通常是在`mounted()`生命周期钩子函数里进行[^1]。 #### 绑定事件处理逻辑 创建用于响应拖拽动作结束后的回调函数,该函数负责更新数据源数组以反映新的顺序变化情况。每当用户调整某一行的位置时都会触发这个自定义的方法来同步视图状态与内部的数据模型保持一致。 以下是完整的代码示例: ```html <template> <el-table :data="tableData" style="width: 100%"> <!-- 表头 --> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </template> <script> import Sortable from 'sortablejs'; export default { data() { return { tableData: [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles' }, { date: '2016-05-02', name: 'John', address: 'New York No. 1 Lake Park' } ] }; }, mounted() { const el = this.$refs.table.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]; this.sortable = Sortable.create(el, { onEnd({ newIndex, oldIndex }) { const targetRow = this.tableData.splice(oldIndex, 1)[0]; this.tableData.splice(newIndex, 0, targetRow); }.bind(this) }); } }; </script> ``` 上述代码展示了如何利用`sortablejs`配合Element UI框架下的表格控件达成行级别的拖放重排效果。注意这里假设已经正确配置好了Vue CLI工具链以及相关开发环境设置。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值