当前位置:首页 > VUE

vue 实现全选全不选

2026-02-24 00:30:05VUE

实现全选全不选功能

在 Vue 中实现全选全不选功能可以通过以下方法完成,主要涉及数据绑定和事件处理。

数据绑定

创建一个包含复选框的列表,并为每个复选框绑定一个 v-model。同时添加一个全选复选框,用于控制所有子复选框的状态。

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

数据初始化

datasetup 中定义初始数据,包括子项列表和全选状态。

vue 实现全选全不选

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '选项1', checked: false },
        { id: 2, name: '选项2', checked: false },
        { id: 3, name: '选项3', checked: false }
      ],
      selectAll: false
    }
  }
}
</script>

全选逻辑

通过 toggleAll 方法控制所有子复选框的状态。当全选复选框状态变化时,遍历所有子项并更新其 checked 值。

methods: {
  toggleAll() {
    this.items.forEach(item => {
      item.checked = this.selectAll
    })
  }
}

子项选中状态同步

监听子复选框的变化,动态更新全选复选框的状态。使用计算属性或 watch 实现。

vue 实现全选全不选

computed: {
  selectAll: {
    get() {
      return this.items.every(item => item.checked)
    },
    set(value) {
      this.items.forEach(item => {
        item.checked = value
      })
    }
  }
}

完整代码示例

以下是一个完整的 Vue 组件实现全选全不选功能的代码:

<template>
  <div>
    <input type="checkbox" v-model="selectAll"> 全选
    <div v-for="item in items" :key="item.id">
      <input type="checkbox" v-model="item.checked"> {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '选项1', checked: false },
        { id: 2, name: '选项2', checked: false },
        { id: 3, name: '选项3', checked: false }
      ]
    }
  },
  computed: {
    selectAll: {
      get() {
        return this.items.every(item => item.checked)
      },
      set(value) {
        this.items.forEach(item => {
          item.checked = value
        })
      }
    }
  }
}
</script>

使用 Vue 3 Composition API

如果使用 Vue 3 的 Composition API,可以通过 refcomputed 实现类似功能。

<template>
  <div>
    <input type="checkbox" v-model="selectAll"> 全选
    <div v-for="item in items" :key="item.id">
      <input type="checkbox" v-model="item.checked"> {{ item.name }}
    </div>
  </div>
</template>

<script setup>
import { ref, computed } from 'vue'

const items = ref([
  { id: 1, name: '选项1', checked: false },
  { id: 2, name: '选项2', checked: false },
  { id: 3, name: '选项3', checked: false }
])

const selectAll = computed({
  get() {
    return items.value.every(item => item.checked)
  },
  set(value) {
    items.value.forEach(item => {
      item.checked = value
    })
  }
})
</script>

注意事项

  • 确保 v-model 绑定的数据是响应式的,否则状态变化不会触发视图更新。
  • 如果子项数据动态变化(如从接口加载),需要在数据加载后重新计算全选状态。

标签: 全选不选
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

vue实现点击全选

vue实现点击全选

Vue 实现点击全选功能 在 Vue 中实现点击全选功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 v-model 和计算属性 通过计算属性来实现全选和反选功能,适用于复选框列表…

jquery全选

jquery全选

jQuery实现全选功能的方法 使用jQuery实现全选功能可以通过监听复选框的点击事件,动态控制其他复选框的状态。以下是几种常见实现方式: 基础全选/取消全选 通过监听全选复选框的chan…

vue实现全选 单选

vue实现全选 单选

Vue实现全选与单选功能 在Vue中实现全选和单选功能通常涉及数据绑定、事件处理和计算属性的使用。以下是两种常见的实现方式: 基于数组的复选框实现 <template> <di…

使用vue实现全选

使用vue实现全选

使用 Vue 实现全选功能 基础实现思路 通过 v-model 绑定全选复选框的状态,同时监听其变化来更新子选项的状态。 模板部分 <template> <div>…

vue实现数组全选

vue实现数组全选

Vue 实现数组全选功能 在 Vue 中实现数组全选功能通常涉及以下几个步骤: 数据绑定与状态管理 创建一个数组来存储所有选项的数据,并添加一个 selectedItems 数组来存储已选中的项。使…