8行JS代码实现Vue穿梭框
实现效果
完整 demo 参考
<template>
<div class="contain">
<ul class="">
<li class="count">{{num(leftData,true)}}/{{leftData.length}}</li>
<li v-for="(city,index) in leftData" :key="index">
<input type="checkbox" v-model="city.check"> {{city.name}}
</li>
</ul>
<div class="btn">
<button @click="toRight">>> </button>
<button @click="toLeft"><<</button>
</div>
<ul>
<li class="count">{{num(rightData,true)}}/{{rightData.length}}</li>
<li v-for="(city,index) in rightData" :key="index">
<input type="checkbox" v-model="city.check"> {{city.name}}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
leftData: [
{ name: '北京', check: true },
{ name: '天津', check: false },
{ name: '上海', check: false },
{ name: '内蒙', check: false },
{ name: '重庆', check: false },
{ name: '台湾', check: false },
{ name: '香港', check: false },
{ name: '澳门', check: false }
],
rightData: []
}
},
methods: {
toRight() {
let selectData = this.filterData(this.leftData, true)
this.rightData = [...this.rightData, ...selectData]
this.leftData = this.filterData(this.leftData, false)
},
toLeft() {
let selectData = this.filterData(this.rightData, true)
this.leftData = [...this.leftData, ...selectData]
this.rightData = this.filterData(this.rightData, false)
},
filterData: (data, state) => data.filter(item => item.check == state)
},
computed: {
num() {
return (data, state) => this.filterData(data, state).length
}
}
}
</script>
<style scoped>
.contain {
padding: 100px;
}
ul {
display: inline-block;
width: 200px;
border: 1px solid #ccc;
min-height: 400px;
vertical-align: top;
padding: 0;
margin: 0;
}
li {
line-height: 37px;
width: 200px;
border-bottom: 1px solid #ccc;
text-align: center;
list-style: none;
}
.count {
text-align: right;
color: brown;
padding-right: 20px;
background: #eee;
height: 45px;
line-height: 45px;
box-sizing: border-box;
}
.btn {
display: inline-block;
width: 100px;
text-align: center;
padding-top: 150px;
}
button {
width: 80px;
margin-bottom: 20px;
text-align: center;
}
</style>
8行JS代码实现Vue穿梭框的更多相关文章
- 不到30行JS代码实现的Excel表格
不到30行JS代码实现的Excel表格,jQuery并非不可替代 某国外程序员展示了一个由原生JS写成不依赖第三方库的,Excel表格应用,有以下特性: 由不足30行的原生JavaScript代码实现 ...
- 20行JS代码实现贪吃蛇
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 20行js代码制作网页刮刮乐
分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 盖伦.jpg 刮刮乐.gif HTML部分 <body>  &l ...
- 5行js代码搞定导航吸顶效果
一.HTML布局 首先写HTML布局 <body> <div id="wrap"></div> </body> 二.CSS样式 给点 ...
- 18 行 JS 代码编一个倒时器
有时候在生活中,你需要一个JavaScript倒计时时钟,而不是一个末日装置设备.不管你是否有一次约会,销售.促销.或者游戏,你可以受益于使用原生JavaScript构建一个时钟,而不是拿到一个现成的 ...
- 360自动抢票还不够,几行js代码设置无人值守
360就是牛逼哄哄的...... 但是最近在使用360浏览器抢票的时候还是发现了一些体验不好的地方,比如搞着搞着就退出了登录,有时候能帮你自动登录进去,但是自动登录之后又不会帮你自动开始抢.然后验证码 ...
- JS代码实现的聊天框
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue-toy: 200行代码模拟Vue实现
vue-toy 200行左右代码模拟vue实现,视图渲染部分使用React来代替Snabbdom,欢迎Star. 项目地址:https://github.com/bplok20010/vue-toy ...
- Vue实现拖拽穿梭框功能四种方式
一.使用原生js实现拖拽 点击打开视频讲解更加详细 <html lang="en"> <head> <meta charset="UTF-8 ...
- 65行 JavaScript 代码实现 Flappy Bird 游戏
飞扬的小鸟(Flappy Bird)无疑是2014年全世界最受关注的一款游戏.这款游戏是一位来自越南河内的独立游戏开发者阮哈东开发,形式简易但难度极高的休闲游戏,很容易让人上瘾. 这里给大家分享一篇这 ...
随机推荐
- Mono 支持LoongArch架构
近期,著名的.NET开源社区Mono正式支持LoongArch(龙架构),目前LoongArch64架构已出现在.NET社区主干分支上. 详细内容可以跟踪 https://github.com/mon ...
- webapi动态创建后台任务(使用排队的后台任务)
很多时候我们都会使用后台定时任务,但有些任务不需要定时执行,只需要请求到来时执行一次,比如请求服务器到某个地方同步数据,但请求不需要等数据同步完成再响应.这时候就可以使用排队的后台任务. 基本原理是用 ...
- WPF新建viewModel实例化成员的注意事项
不要用表达式体去初始化一个用做数据源(比如ItemSource)的引用类型成员.比如这种 public List<MainWindowItem> Items => new List& ...
- Kubernetes 数据存储:从理论到实践的全面指南
本文深入解析 Kubernetes (K8S) 数据存储机制,探讨其架构.管理策略及最佳实践.文章详细介绍了 K8S 数据存储的基础.架构组成.存储卷管理技巧,并通过具体案例阐述如何高效.安全地管理数 ...
- Java21 GA新特性-虚拟线程详解
本文转载至:虚拟线程 - VirtualThread源码透视 - throwable - 博客园 (cnblogs.com) 一. 前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟 ...
- 浅谈C#中取消令牌CancellationTokenSource
基础操作 CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); cancellationTo ...
- 在 Inno Setup iss 打包过程 中检测 .NET 6 / .net 5 / .NET Core 运行环境是否存在或已安装
为了将 .NET 5 / .NET Core 应用程序部署到客户机,我们可以编写 Inno Setup 代码来判断客户机是否安装了必要的运行环境..NET 官方仓库 中提供了一个名为 NetCoreC ...
- C++笔记(6) 指针
1.指针和数组 指针和数组基本等价的原因在于指针算数和C++内部处理数组的方式.在很多情况下,可以用相同的方式使用数组名和指针名. 在多数情况下,C++将数组名视为数组的第一个元素的地址.指针p的值为 ...
- uniapp 跳转指定的tab导航页面
考察的知识点:1.uniapp的页面跳转方法:uni.navigateTo2.页面跳转传值的方法:'?名称=值' 的方式3.参数的接收 onload(option){} 第一个页面的写法: toCom ...
- css作用 文本属性 颜色属性
Css作用:美化页面 各种css属性 接触的 css属性 width: height: background: Color 选择符和声明 声明包括 属性:属性值 选择符:{ 属性:属性值 } 1:文本 ...