当前位置:首页 > VUE

vue排他思想实现

2026-02-10 18:19:22VUE

Vue 排他思想实现

排他思想指的是在一组元素中,仅允许一个元素处于激活状态,其他元素自动取消激活。以下是几种常见的实现方法:

使用 v-for 和 v-model

通过 v-model 绑定一个变量,结合 v-for 动态生成元素,点击时更新绑定的变量。

vue排他思想实现

<template>
  <div>
    <button 
      v-for="item in items" 
      :key="item.id" 
      @click="selectedItem = item.id"
      :class="{ active: selectedItem === item.id }"
    >
      {{ item.name }}
    </button>
  </div>
</template>

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

<style>
.active {
  background-color: #42b983;
  color: white;
}
</style>

使用计算属性

通过计算属性动态判断当前选中项,避免直接操作 DOM。

vue排他思想实现

<template>
  <div>
    <button 
      v-for="item in items" 
      :key="item.id" 
      @click="toggleActive(item.id)"
      :class="{ active: isActive(item.id) }"
    >
      {{ item.name }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '选项1' },
        { id: 2, name: '选项2' },
        { id: 3, name: '选项3' }
      ],
      activeItem: null
    }
  },
  methods: {
    toggleActive(id) {
      this.activeItem = id
    },
    isActive(id) {
      return this.activeItem === id
    }
  }
}
</script>

使用事件总线或 Vuex

对于跨组件排他操作,可以通过事件总线或 Vuex 管理全局状态。

// 使用事件总线
import Vue from 'vue'
const EventBus = new Vue()

// 组件A
EventBus.$emit('set-active', itemId)

// 组件B
EventBus.$on('set-active', (id) => {
  this.activeItem = id
})

动态样式绑定

通过 :class:style 动态切换样式,实现视觉排他效果。

<button 
  v-for="item in items" 
  :key="item.id" 
  @click="selectedItem = item.id"
  :style="{ 
    backgroundColor: selectedItem === item.id ? '#42b983' : '', 
    color: selectedItem === item.id ? 'white' : '' 
  }"
>
  {{ item.name }}
</button>

以上方法均能实现排他效果,选择取决于具体场景和项目复杂度。

标签: 思想vue
分享给朋友:

相关文章

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm insta…

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <tem…

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keyword…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue广告实现

vue广告实现

Vue 广告实现方法 在 Vue 项目中实现广告功能可以通过多种方式完成,具体取决于广告类型和需求。以下是几种常见的实现方法: 使用第三方广告平台 许多广告平台如 Google AdSense、百…

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.def…