element table展开行只显示一行

首先关键事件和属性

@expand-change="expandChange" :expand-row-keys="expands" :row-key="getRowKeys"

 expand-change 展开行change事件

 这里也只用第一个参数,

 expand-row-keys 绑定展开行的key值数组,设置为当前选择的key值就行

 row-key 辅助expand-row-keys的使用

 最终代码,亲测有效

<template>
  <el-table ref="table" :data="tableData"  @expand-change="expandChange" :expand-row-keys="expands" :row-key="getRowKeys">
    <el-table-column type="expand">
      <template>
        <el-table class="table-expand" :data="childTableData" >
            <el-table-column prop="category" label="z"></el-table-column>
            <el-table-column prop="address" label="x"></el-table-column>
            <el-table-column prop="shop" label="c"></el-table-column>
            <el-table-column prop="shopId" label="任务状态"></el-table-column>
          </el-table>
      </template>
    </el-table-column>
    <el-table-column label="Date" prop="date" />
    <el-table-column label="Name" prop="name" />
  </el-table>
</template>

<script lang="ts">
export default {
  data() {
    return {
      tableData: [
        {
          id:1,
          date: '2016-05-03',
          name: 'Tom',
          state: 'California',
          city: 'Los Angeles',
          address: 'No. 189, Grove St, Los Angeles',
          zip: 'CA 90036',
        },
        {
          id:2,
          date: '2016-05-02',
          name: 'Tom',
          state: 'California',
          city: 'Los Angeles',
          address: 'No. 189, Grove St, Los Angeles',
          zip: 'CA 90036',
        },
        {
          id:3,
          date: '2016-05-04',
          name: 'Tom',
          state: 'California',
          city: 'Los Angeles',
          address: 'No. 189, Grove St, Los Angeles',
          zip: 'CA 90036',
        }
      ],
      expands:[2],
      getRowKeys(row) {
        return row.id
      },
      childTableData: [
        {
          category: "江浙小吃、小吃零食",
          address: "上海市普陀区真北路",
          shop: "王小虎夫妻店",
          shopId: "10333"
        }
      ],
    }
  },
  methods:{
    expandChange(row){
      this.expands = [row.id]
    }
  }
}
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element表格组件是一种非常常见的UI组件,通常用于展示数据并提供交互。其中一个常见的功能是“展开”,即用户可以点击任何一行或列,以展开显示更多相关信息。Element表格组件为了实现这个功能,可以使用“scoped slot”技术和v-if指令。 首先我们需要定义一个“slot”容器,以显示额外的信息,当用户点击时显示。在表格中,每一行都有一个相应的“slot”容器,可以用来显示的详细信息。我们可以在表格的组件中使用“scope slot”技术来定义这个容器。例如,可以通过以下代码定义一个“slot”容器: <template slot-scope="{row}"> <div v-if="expanded[row.id]"> <p>{{row.description}}</p> </div> </template> 在这个例子中,我们定义了一个名为“slot”的模板,并使用了“scope slot”技术。这个模板的作用是显示一行的详细信息。注意到我们使用了“v-if”指令来控制容器的显示,这将在下一步中讲解。 接下来,我们需要在表格中定义“点击事件”,以展开时触发。表格组件提供了“$emit”方法来触发事件。例如,我们可以在“mounted”生命周期钩子中定义如下的响应函数: mounted() { this.$nextTick(() => { this.$children[0].$on('row-click', this.toggleRowExpansion); }); }, 这里我们监听了子组件(即表格)中的“row-click”事件,并将事件传递给“toggleRowExpansion”函数。在这个函数中,我们可以通过记录哪些展开,来控制“v-if”指令的使用: toggleRowExpansion(row) { this.$set(this.expanded, row.id, !this.expanded[row.id]); }, 当用户点击时,这个函数将查询哪一行被点击,并将其状态设置为“expanded”或“collapsed”。这个状态可以保存在“expanded”对象中,以便后续使用。 最后需要注意的一点是,在表格组件中,如果使用以上的方法来实现“展开”的功能,需要使用“表格树”模式。这种模式下,每一行都必须包含一个唯一的“id”,并且父和子之间需要有一个“children”关系的定义。这些属性都是通过表格组件的“props”参数传入的。例如: <el-table :data="tableData" :row-key="row => row.id" :tree-props="{hasChildren: 'hasChildren', children: 'children'}"> ... </el-table> 这些参数告诉表格组件如何处理数据,并让组件能够自动生成正确的“children”关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值