当前位置:首页 > VUE

vue实现checkbox选取

2026-03-29 06:41:20VUE

实现基础 Checkbox 绑定

在 Vue 中可以通过 v-model 实现双向数据绑定。对于单个 checkbox,绑定的是布尔值:

<template>
  <input type="checkbox" v-model="isChecked" />
  <label>{{ isChecked ? '已选中' : '未选中' }}</label>
</template>

<script>
export default {
  data() {
    return {
      isChecked: false
    }
  }
}
</script>

处理多个 Checkbox 选项

当需要处理多个选项时,可以将 v-model 绑定到数组:

vue实现checkbox选取

<template>
  <div v-for="option in options" :key="option.value">
    <input 
      type="checkbox" 
      :id="option.value" 
      :value="option.value" 
      v-model="selectedOptions"
    />
    <label :for="option.value">{{ option.label }}</label>
  </div>
  <p>已选择: {{ selectedOptions }}</p>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'apple', label: '苹果' },
        { value: 'banana', label: '香蕉' },
        { value: 'orange', label: '橙子' }
      ],
      selectedOptions: []
    }
  }
}
</script>

自定义 Checkbox 组件

创建可复用的 Checkbox 组件:

<!-- Checkbox.vue -->
<template>
  <label class="checkbox-container">
    <input 
      type="checkbox" 
      :checked="modelValue" 
      @change="$emit('update:modelValue', $event.target.checked)"
    />
    <span class="checkmark"></span>
    <slot></slot>
  </label>
</template>

<script>
export default {
  props: {
    modelValue: {
      type: Boolean,
      default: false
    }
  },
  emits: ['update:modelValue']
}
</script>

<style>
.checkbox-container {
  display: inline-block;
  position: relative;
  cursor: pointer;
}
/* 自定义样式代码... */
</style>

使用 v-model 与计算属性

对于需要处理的复杂逻辑,可以使用计算属性:

vue实现checkbox选取

<template>
  <input type="checkbox" v-model="computedChecked" />
</template>

<script>
export default {
  props: ['checked'],
  emits: ['update:checked'],
  computed: {
    computedChecked: {
      get() {
        return this.checked
      },
      set(value) {
        this.$emit('update:checked', value)
      }
    }
  }
}
</script>

动态渲染 Checkbox 列表

结合 API 数据动态渲染选项:

<template>
  <div v-if="loading">加载中...</div>
  <div v-else>
    <div v-for="item in apiData" :key="item.id">
      <input 
        type="checkbox" 
        :value="item.id" 
        v-model="selectedItems"
      />
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      apiData: [],
      selectedItems: [],
      loading: true
    }
  },
  async created() {
    try {
      const response = await fetch('api/items')
      this.apiData = await response.json()
    } finally {
      this.loading = false
    }
  }
}
</script>

全选/反选功能实现

添加全选功能需要额外处理:

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

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

标签: vuecheckbox
分享给朋友:

相关文章

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现增删

vue实现增删

Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是基于 Vue 2 或 Vue 3 的实现方法: 数据定义 初始化一个数组用于存储列表数据,并在 Vue 实…

vue实现mvvm

vue实现mvvm

Vue 实现 MVVM 模式 MVVM(Model-View-ViewModel)是一种前端架构模式,Vue 是其典型实现之一。MVVM 的核心是通过数据绑定和响应式系统实现视图与数据的自动同步。…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…