当前位置:首页 > VUE

vue表单全选实现

2026-02-17 19:43:25VUE

Vue 表单全选实现方法

基础实现(基于 v-model)

通过绑定一个全选复选框的 v-model 与子选项的选中状态实现联动:

<template>
  <div>
    <label>
      <input type="checkbox" v-model="selectAll" @change="toggleAll">
      全选
    </label>
    <div v-for="item in items" :key="item.id">
      <label>
        <input type="checkbox" v-model="selectedItems" :value="item.id">
        {{ item.name }}
      </label>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '选项1' },
        { id: 2, name: '选项2' },
        { id: 3, name: '选项3' }
      ],
      selectedItems: []
    }
  },
  computed: {
    selectAll: {
      get() {
        return this.selectedItems.length === this.items.length
      },
      set(value) {
        this.selectedItems = value ? this.items.map(item => item.id) : []
      }
    }
  },
  methods: {
    toggleAll() {
      this.selectAll = !this.selectAll
    }
  }
}
</script>

动态计算实现

通过计算属性动态判断全选状态,适用于异步加载数据场景:

<template>
  <!-- 同上模板结构 -->
</template>

<script>
export default {
  data() {
    return {
      items: [],
      selectedItems: []
    }
  },
  computed: {
    selectAll() {
      return this.items.length > 0 && 
             this.selectedItems.length === this.items.length
    }
  },
  methods: {
    handleSelectAll() {
      if (this.selectAll) {
        this.selectedItems = []
      } else {
        this.selectedItems = [...this.items.map(item => item.id)]
      }
    }
  }
}
</script>

表格场景实现

适用于表格行的批量选择,结合 el-checkbox(Element UI 示例):

<template>
  <el-table :data="tableData">
    <el-table-column type="selection" width="55" :selectable="selectable">
    </el-table-column>
    <!-- 其他列 -->
  </el-table>
</template>

<script>
export default {
  methods: {
    selectable(row, index) {
      return row.status === 'active' // 可添加选择条件
    },
    handleSelectionChange(val) {
      this.selectedItems = val
    }
  }
}
</script>

性能优化方案

对于大数据量场景,采用虚拟滚动时建议使用以下策略:

vue表单全选实现

// 在数据量较大时使用 Set 存储选中项
data() {
  return {
    selectedSet: new Set()
  }
},
methods: {
  toggleSelection(id) {
    this.selectedSet.has(id) 
      ? this.selectedSet.delete(id) 
      : this.selectedSet.add(id)
  },
  selectAllItems() {
    this.items.forEach(item => this.selectedSet.add(item.id))
  }
}

注意事项

  • 当存在分页时,需要区分当前页全选和全局全选
  • 异步加载数据时需要重置全选状态
  • 使用 deep: true 监听数组变化时可能影响性能
  • 对于禁用项需要额外处理 selectable 逻辑

以上方法可根据具体业务需求组合使用,建议通过 Vue Devtools 调试选中状态的变化过程。

标签: 表单全选
分享给朋友:

相关文章

css表单制作

css表单制作

表单基础结构 使用HTML创建表单容器,包含<form>标签及输入字段。表单通常需要<input>、<label>、<textarea>等元素。…

css制作表单

css制作表单

创建基本表单结构 使用HTML的<form>标签作为表单容器,内部包含输入字段、标签和提交按钮。表单元素通常需要<label>关联以提高可访问性。 <form>…

jquery提交表单

jquery提交表单

使用 jQuery 提交表单 jQuery 提供了多种方法来提交表单,以下是常见的几种实现方式: 监听表单提交事件 通过监听表单的 submit 事件,可以阻止默认提交行为并执行自定义逻辑(如 Aj…

vue实现多选 全选

vue实现多选 全选

实现多选和全选功能 在Vue中实现多选和全选功能可以通过以下方式完成。假设有一个列表数据,需要实现勾选部分项或一键全选。 数据准备 定义一个数据列表和选中项的数组,以及全选状态。 data() {…

vue实现动态表单

vue实现动态表单

Vue 动态表单实现方法 使用 v-for 动态渲染表单字段 通过遍历数组动态生成表单项,数据驱动视图变化。表单字段配置可存储在数组中,修改数组即可实现表单动态更新。 <template>…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…