当前位置:首页 > VUE

vue 实现多选

2026-02-25 14:56:39VUE

Vue 实现多选的方法

使用 v-model 绑定数组

在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。适用于复选框组(checkbox)或下拉多选(select multiple)。

<template>
  <div>
    <h3>选择你喜欢的编程语言:</h3>
    <div v-for="lang in languages" :key="lang">
      <input type="checkbox" :id="lang" :value="lang" v-model="selectedLangs">
      <label :for="lang">{{ lang }}</label>
    </div>
    <p>已选择:{{ selectedLangs }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      languages: ['JavaScript', 'Python', 'Java', 'C++'],
      selectedLangs: []
    };
  }
};
</script>

使用下拉多选

通过 <select multiple> 结合 v-model 实现多选。

<template>
  <div>
    <h3>选择你喜欢的框架:</h3>
    <select multiple v-model="selectedFrameworks">
      <option v-for="framework in frameworks" :key="framework" :value="framework">
        {{ framework }}
      </option>
    </select>
    <p>已选择:{{ selectedFrameworks }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      frameworks: ['Vue', 'React', 'Angular', 'Svelte'],
      selectedFrameworks: []
    };
  }
};
</script>

使用第三方组件库

若需要更丰富的功能(如搜索、分组等),可以借助第三方组件库如 Element UIVuetify

以 Element UI 为例:

<template>
  <div>
    <el-select v-model="selectedOptions" multiple placeholder="请选择">
      <el-option
        v-for="item in options"
        :key="item.value"
        :label="item.label"
        :value="item.value">
      </el-option>
    </el-select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      options: [
        { value: 'option1', label: '选项1' },
        { value: 'option2', label: '选项2' }
      ],
      selectedOptions: []
    };
  }
};
</script>

自定义多选组件

通过自定义逻辑实现多选交互,例如点击标签切换选中状态。

vue 实现多选

<template>
  <div>
    <div 
      v-for="tag in tags" 
      :key="tag" 
      class="tag" 
      :class="{ active: selectedTags.includes(tag) }"
      @click="toggleTag(tag)">
      {{ tag }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tags: ['前端', '后端', '运维', '设计'],
      selectedTags: []
    };
  },
  methods: {
    toggleTag(tag) {
      const index = this.selectedTags.indexOf(tag);
      if (index === -1) {
        this.selectedTags.push(tag);
      } else {
        this.selectedTags.splice(index, 1);
      }
    }
  }
};
</script>

<style>
.tag {
  display: inline-block;
  padding: 5px 10px;
  margin: 5px;
  border: 1px solid #ccc;
  cursor: pointer;
}
.tag.active {
  background-color: #42b983;
  color: white;
}
</style>

注意事项

  • 使用 v-model 绑定时需确保初始值为数组。
  • 下拉多选需设置 multiple 属性。
  • 第三方组件库需按文档引入并注册组件。

标签: 多选vue
分享给朋友:

相关文章

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API metho…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…

vue实现兼容

vue实现兼容

Vue 兼容性实现方案 Vue.js 的兼容性主要涉及对不同浏览器、Vue 版本以及第三方库的支持。以下是常见的兼容性解决方案: 浏览器兼容性 使用 Babel 转换 ES6+ 代码为 ES5 语…

vue 实现$(id)

vue 实现$(id)

在 Vue 中实现类似 jQuery 的 $(id) 功能,可以通过以下几种方式操作 DOM 元素: 使用 ref 属性 Vue 推荐使用 ref 属性来直接访问 DOM 元素或组件实例。在模板中为…

vue实现fragment

vue实现fragment

Vue 实现 Fragment 的方法 在 Vue 中,Fragment 允许组件返回多个根节点而不需要包裹一个额外的 DOM 元素。以下是几种实现方式: 使用 Vue 3 的 <templa…