当前位置:   article > 正文

element table 判断当前行是否展开和只展开一行

element table 判断当前行是否展开和只展开一行

element组件提供了table的展开和收起功能,并提供了expand-change事件用来监听table行的展开和收起

在一些特殊情况下如:处理异步数据时,希望展开行时请求接口,关闭行时不用请求,但是expand-change监听事件,无论是展开还是收起都会触发,于是就希望能有一个类似isExpended布尔类型的状态属性来判断是否调用接口。

借助expand-change的参数实现 判断展开还是关闭

expand-change会获取两个参数,第一个参数是当前行的数据,第二个参数是当前展开行的数组

:展开时数组会加一,收起时数组会减一。

  1. <template>
  2. <el-table @expand-change="handleExpandChange"></el-table>
  3. </template>
  4. <script setup lang="ts">
  5. const expandchange = async (row: any, rows: any) => {
  6. const isExpend = rows.some((r:any) => r.id === row.id) // 判断当前行展开状态
  7. if (isExpend) {
  8. console.log('当前行已展开')
  9. //调取接口
  10. } else {
  11. console.log('当前行已关闭')
  12. return
  13. }
  14. }
  15. </script>
 实现只展开一行

如果设置table展开列只能有限展开一行时可以根据第二个参数的length来进行判断,如果允许同时展开多行时,这需要判断第二个参数数组中是否包含第一个参数的值,如果包含则是展开,如果不包含则是收起。

 :row-key='getRowKeys'              作为每一项的key,确保唯一性

:expand-row-keys="expands"     用来存储唯一的值

  1. <el-table :data="tableData" border style="width: 100%" @expand-change="expandchange" :row-key="getRowKeys" :expand-row-keys="expends"></el-table>
  2. <script setup lang="ts">
  3. const getRowKeys = (row) => {
  4. return row.id
  5. }
  6. const expends = ref([])
  7. const expandchange = async (row: any, rows: any) => {
  8. if (rows.length) {//说明展开了
  9. expends.value = []
  10. if (row) {
  11. expends.value.push(row.id)//只展开当前行id
  12. }
  13. } else {
  14. expends.value = []
  15. return
  16. }
  17. }
  18. </script>

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

闽ICP备14008679号