element-ui (vue)table表格利用sortable排序后,如何获取排序后的table数组数据?

如排序之前渲染table的数组为 :data="tableData",那么利用sortable排序后,现在的数组如何获取,我查阅了文档都没找到答案,望大神告知

阅读 21.8k
8 个回答

根据vue的解释 prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解。

所以我觉得排序的是内部副本,你应该拿不到,不如通过sort-method触发你对本地的data进行排序

用this.$refs,里面就有table对象

我实验了一下,或许能力不够,没有成功获取排序后的table数组数据,只能获取当前数据与比较数据;
<el-table :data="showTable" stripe height="250" @select="selected" ref="multipleTable" @selection-change="handleSelectionChange" @row-click="handleclick"

:default-sort = "{prop: 'date', order: 'descending'}"

>

<el-table-column

  type="selection"
  width="55"
>
</el-table-column>
  <el-table-column
    prop="date"
    label="日期"
   :sort-method="changesort"
    sortable
   >
  </el-table-column>
  <el-table-column
    prop="name"
    label="姓名"
    >
  </el-table-column>
  <el-table-column
    prop="address"
    label="地址"
    
    >
  </el-table-column>
</el-table>

export default{
method(){
    changesort(a,b){
  let oldTime=  (new Date(a.date)).getTime()/1000;
   let newime=  (new Date(b.date)).getTime()/1000;
     if(oldTime-newime>0){
      // console.log(b.date)
       return true;
     }else{
      console.log(b.date)
       return false;
     }

  }
  }
}

element UI的table数据是请求数据的副本;要获取排序后的数据需要获取到当前table实例;找到tableData数据;这个就是排序的数据;

不用element-ui提供的sortable,自己吧tabledata排序一下再显示满足你的要求吗?

新手上路,请多包涵

请问一下,这个问题解决了吗

新手上路,请多包涵

碰到和你一样的问题不过可以选择用this.$refs.multipleTable.$refs.elTabMultipleTable.tableData
这个数据的话是重新排序后的数据

新手上路,请多包涵

给table设置ref为multipleTable,然后通过this.$refs.multipleTable.tableData来获取,获取时间为监听sort-change的时候

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题