vue实现穿梭框

本文详细介绍了如何使用Vue实现一个具备单选、多选、全选功能的穿梭框组件。通过监听按钮点击事件完成数据左右穿梭,同时实现了选中数量的实时显示以及空数据时按钮禁用的效果。代码示例展示了具体的实现逻辑,为前端开发者提供了一个实用的交互组件实现参考。
摘要由CSDN通过智能技术生成

用vue实现穿梭框,样式自己简单写了一下css,交互功能主要包括选项的单选、多选、反选功能,选项右上角的选中/选项总数展示,最后就是数据左右穿梭啦。实现基本效果如下图:

好了,接下来我们开始实现逻辑效果:

一、数据左右穿梭的功能,先给左右按钮加上点击事件,将选中的数据取出来追加到右边,在源数据删除掉这些数据,这时别忘把截取移到右边数据的选中状态取消。

上代码:

 

 

 二、然后是实现选项的单选、多选、全选功能。

点击全选按钮,将全选checkbox的选中状态值赋给每一个选项,然后在计算属性里根据选项的选中状态来返回全选按钮的值。

 

 三、最后就是右上角的选中/选项总数展示和数据为空时的按钮置灰状态啦,选中数量可以通过计算选中数据的长度表示,这里通过计算属性来做,然后按钮置灰就是通过数据源的长度来作为控制条件。

右上角数据显示:

 按钮置灰:

 

 

  OK,这样基本差不多就完事啦。

 

 

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好,下面是一个简单的 Vue 穿梭实现,包含复选、全选和筛选功能: ```html <template> <div> <!-- 左侧内容区域 --> <div class="left"> <div class="search"> <input type="text" v-model="searchText" placeholder="请输入关键字"> <button @click="search">搜索</button> </div> <div class="items"> <label v-for="item in leftData" :key="item.id" :title="item.name"> <input type="checkbox" v-model="item.checked" @change="checkAll"> {{ item.name }} </label> </div> </div> <!-- 右侧选择区域 --> <div class="right"> <div class="selected"> <label v-for="item in selectedData" :key="item.id" :title="item.name"> <input type="checkbox" v-model="item.checked" @change="checkAll"> {{ item.name }} </label> </div> </div> </div> </template> <script> export default { data() { return { leftData: [ { id: 1, name: '选项1', checked: false }, { id: 2, name: '选项2', checked: false }, { id: 3, name: '选项3', checked: false }, { id: 4, name: '选项4', checked: false }, { id: 5, name: '选项5', checked: false }, ], selectedData: [], searchText: '', } }, methods: { // 左侧筛选 search() { const text = this.searchText.trim().toLowerCase() this.leftData.forEach(item => { item.hide = !item.name.toLowerCase().includes(text) }) }, // 全选 checkAll() { const allChecked = this.leftData.every(item => item.checked) this.leftData.forEach(item => { item.checked = allChecked }) }, }, // 计算属性 computed: { // 过滤后的左侧数据 filteredLeftData() { return this.leftData.filter(item => !item.hide) }, }, } </script> <style> .left { display: inline-block; width: 400px; border: 1px solid #ccc; padding: 10px; vertical-align: top; } .right { display: inline-block; width: 200px; border: 1px solid #ccc; padding: 10px; vertical-align: top; } .search { margin-bottom: 10px; } .items { max-height: 200px; overflow-y: auto; } .selected { max-height: 200px; overflow-y: auto; } </style> ``` 在这个实现中,左侧区域会显示一组复选,可以通过搜索进行筛选,也可以通过全选按钮进行全选/全不选操作。选中的复选会被添加到右侧区域中。 需要注意的是,这个实现只是一个简单的示例,如果需要更复杂的功能,可能需要进行进一步的扩展和修改。希望这个实现可以对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值