【ElementUI组件刨析】Tabs组件:使用el-table实现鼠标经过某一行时隐藏或者显示按钮

文章展示了如何使用Vue2.0框架结合ElementUI库,利用事件委托机制实现表格中单元格的编辑功能。当鼠标移入和移出单元格时,动态显示编辑按钮,并通过行的唯一标识进行状态判断。代码示例中,事件绑定在表格元素上,而不是每个单元格,以优化性能。

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

项目效果展示:

代码实现:

<template>
  <el-table
    :data="tableData"
    border
    style="width: 100%"
    @cell-mouse-enter="mouseEnter"
    @cell-mouse-leave="mouseLeave"
  >
    <el-table-column fixed prop="date" label="日期" width="150">
    </el-table-column>
    <el-table-column prop="name" label="姓名" width="120"> </el-table-column>
    <el-table-column prop="province" label="省份" width="120">
    </el-table-column>
    <el-table-column prop="city" label="市区" width="120"> </el-table-column>
    <el-table-column label="操作" width="100">
      <template slot-scope="scope">
        <el-button
          type="text"
          size="small"
          v-show="showEditFileNameButton && rowId == scope.row.__ob__.dep.id"
          @click="handleClick(scope)"
          >编辑</el-button
        >
      </template>
    </el-table-column>
  </el-table>
</template>
  
  <script>
export default {
  methods: {
    //鼠标移入单元格事件
    mouseEnter(row) {
      this.showEditFileNameButton = true;
      this.rowId = row.__ob__.dep.id; //赋值行id,便于页面判断
    },
    //鼠标移出单元格事件
    mouseLeave(row) {
      this.showEditFileNameButton = false;
      this.rowId = "";
    },
  },

  data() {
    return {
      showEditFileNameButton: "",
      rowId: "",
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          province: "上海",
          city: "普陀区",
          address: "上海市普陀区金沙江路 1518 弄",
          zip: 200333,
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          province: "上海",
          city: "普陀区",
          address: "上海市普陀区金沙江路 1517 弄",
          zip: 200333,
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          province: "上海",
          city: "普陀区",
          address: "上海市普陀区金沙江路 1519 弄",
          zip: 200333,
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          province: "上海",
          city: "普陀区",
          address: "上海市普陀区金沙江路 1516 弄",
          zip: 200333,
        },
      ],
    };
  },
};
</script>

代码说明:

  1. 这里使用的时vue2.0+element ui实现的,并且是基于slot插槽实现的;

  1. 使用的主要思想是基于JS的事件委托机制,所以事件的触发者是最大的父元素,而不能添加到每一行中;

  1. 这里需要注意的是,在判断当前行的过程中,使用的id也可以换成其他能代表此行的唯一标识;

  1. 这里代码没有添加css,所以导致元素出现的时候会将当前行撑大,只需要给每一行设定指定高度即可。

这里只是此组件的一小块功能应用,稍后还会继续更新,敬请期待!!!

`element-ui` 是一个基于 Vue.js 的桌面端组件库,提供了丰富的 UI 组件,用于构建交互式的用户界面。`el-tabs` 是 `element-ui` 中的一个标签页组件,它可以创建包含多个面板的标签页,用户可以通过切换标签页来查看不同的内容。 `el-tabs--top` 是 `el-tabs` 组件的一个属性,用于指定标签页的布局位置。当使用 `el-tabs--top` ,标签页将显示在内容区域的上方。 关于“动态table切换”,通常是指在使用 `el-tabs` 组件,根据切换的不同标签页,表格(table)也会相应地进行动态更新。这通常涉及到数据的动态绑定和组件的条件渲染。 在 `element-ui` 中,你可以使用 `v-if` 或者 `v-show` 指令来实现动态切换表格内容。通过监听 `el-tabs` 的 `tab-click` 事件来判断当前选中的标签页,然后根据这个标签页来决定显示哪个表格数据。 以下是一个简单的示例代码: ```html <template> <el-tabs v-model="activeName" @tab-click="handleTabClick"> <el-tab-pane label="用户管理" name="first">用户表格数据</el-tab-pane> <el-tab-pane label="订单管理" name="second">订单表格数据</el-tab-pane> <!-- 更多tab-pane --> </el-tabs> <el-table v-if="activeName === 'first'" :data="userTableData"> <!-- 用户表格内容 --> </el-table> <el-table v-else-if="activeName === 'second'" :data="orderTableData"> <!-- 订单表格内容 --> </el-table> <!-- 更多表格 --> </template> <script> export default { data() { return { activeName: 'first', // 当前激活的标签页名称 userTableData: [], // 用户表格数据 orderTableData: [], // 订单表格数据 }; }, methods: { handleTabClick(tab, event) { // 根据tab.name来更新数据或者其他逻辑 }, }, }; </script> ``` 在这个示例中,当用户点击不同的标签页,会触发 `handleTabClick` 方法,在该方法中可以编写更新表格数据的逻辑,然后根据 `activeName` 的值来决定显示哪个表格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值