ToB企服应用市场:ToB评测及商务社交产业平台

标题: Vue2 前端表格必选项,禁止更改的实现 [打印本页]

作者: 去皮卡多    时间: 2024-11-2 07:16
标题: Vue2 前端表格必选项,禁止更改的实现

Vue2 前端表格必选项,禁止更改的实现

在前端开发中,表格是展示数据的重要方式。而在某些场景下,我们必要确保某些表格列是必选的且用户无法更改,克制数据的误操纵。本文将深入讲解怎样在 Vue2 中实现这一功能,包罗多个详细的代码示例。
根本思路

基础表格实现

首先,我们构建一个简朴的表格组件,利用 Vue2 的 el-table 来展示数据,同时利用 el-checkbox 来控制行的选中状态。
  1. <template>
  2.   <div>
  3.     <el-table
  4.       :data="tableData"
  5.       @selection-change="handleSelectionChange"
  6.     >
  7.       <el-table-column
  8.         type="selection"
  9.         width="55"
  10.       ></el-table-column>
  11.       <el-table-column
  12.         prop="name"
  13.         label="Name"
  14.         width="120"
  15.       ></el-table-column>
  16.       <el-table-column
  17.         prop="age"
  18.         label="Age"
  19.         width="80"
  20.       ></el-table-column>
  21.     </el-table>
  22.   </div>
  23. </template>
  24. <script>
  25. export default {
  26.   data() {
  27.     return {
  28.       tableData: [
  29.         { id: 1, name: "John", age: 24 },
  30.         { id: 2, name: "Tom", age: 26 },
  31.         { id: 3, name: "Jane", age: 22 }
  32.       ],
  33.       selectedIds: [1], // 默认必选项
  34.     };
  35.   },
  36.   methods: {
  37.     handleSelectionChange(selectedRows) {
  38.       this.selectedIds = selectedRows.map(row => row.id);
  39.     }
  40.   }
  41. };
  42. </script>
复制代码
在这个示例中,我们利用了 el-table-column 的 type="selection" 属性,允许用户通过复选框选择行。handleSelectionChange 方法监听选中的行并更新 selectedIds。

实现必选项并禁止更改

为了实现某些行作为必选项且用户无法取消,我们可以借助 el-table 的 selectable 方法和 @select 事件来控制选择举动。以下是改进的代码示例:
  1. <template>
  2.   <div>
  3.     <el-table
  4.       :data="tableData"
  5.       @selection-change="handleSelectionChange"
  6.       ref="multipleTable"
  7.     >
  8.       <el-table-column
  9.         type="selection"
  10.         width="55"
  11.         :selectable="checkSelectable"
  12.       ></el-table-column>
  13.       <el-table-column
  14.         prop="name"
  15.         label="Name"
  16.         width="120"
  17.       ></el-table-column>
  18.       <el-table-column
  19.         prop="age"
  20.         label="Age"
  21.         width="80"
  22.       ></el-table-column>
  23.     </el-table>
  24.   </div>
  25. </template>
  26. <script>
  27. export default {
  28.   data() {
  29.     return {
  30.       tableData: [
  31.         { id: 1, name: "John", age: 24, mandatory: true },
  32.         { id: 2, name: "Tom", age: 26, mandatory: false },
  33.         { id: 3, name: "Jane", age: 22, mandatory: false }
  34.       ],
  35.       selectedIds: [1], // 必选项
  36.     };
  37.   },
  38.   mounted() {
  39.     // 初次加载时,确保必选项被选中
  40.     this.$nextTick(() => {
  41.       this.tableData.forEach(row => {
  42.         if (row.mandatory) {
  43.           this.$refs.multipleTable.toggleRowSelection(row, true);
  44.         }
  45.       });
  46.     });
  47.   },
  48.   methods: {
  49.     checkSelectable(row) {
  50.       return !row.mandatory; // 禁止取消必选项
  51.     },
  52.     handleSelectionChange(selectedRows) {
  53.       this.selectedIds = selectedRows.map(row => row.id);
  54.     }
  55.   }
  56. };
  57. </script>
复制代码

详细说明

进阶:添加禁用提示

为了提拔用户体验,我们可以在用户试图取消必选项时表现提示信息。这可以通过在 checkSelectable 方法中进行额外逻辑处置处罚来实现。
  1. <script>
  2. checkSelectable(row) {
  3.   if (row.mandatory) {
  4.     this.$message({
  5.       message: `Row "${row.name}" is mandatory and cannot be unselected.`,
  6.       type: 'warning'
  7.     });
  8.     return false;
  9.   }
  10.   return true;
  11. }
  12. </script>
复制代码

总结

本文展示了怎样在 Vue2 中实现表格必选项并禁止用户更改。我们通过 el-table 的 selectable 方法和 toggleRowSelection 方法实现了对用户操纵的控制,确保某些行不可取消。此外,我们还通过弹出提示增强了用户体验。在实际开发中,类似的功能可以广泛应用于必要确保特定数据状态的场景中。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4