vue实现穿梭框效果
vue实现穿梭框效果
一、总结
一句话总结:
用两个数组分别记录左右框框里面的值,用两个数组绑定checkbox,用来记录选中的checkbox值,根据选中的checkbox的值实现删除增加即可
1、这里checkbox是绑定的vue的数组数据,所以checkbox的点击的顺序不同的话索引的顺序是不同的,这样删除数据的时候可能会出错(比如删0再删2的时候,2已经变成了1,没2了删就会报错)?
对这个数组按照从大到小排序,从大到小删就不会出问题
2、vue实现穿梭框过程中最容易犯的错误是什么?
checkbox绑定的数据的数组忘记请空,这样删完第一次再删后面的很容易就出错了
3、js向数组中添加数据?
数组的push方法:this.data_right.push(this.data_left[item]);
4、js在数组中删除数据?
数组的splice方法:this.data_left.splice(item, 1);
5、js数组循环?
数组的forEach方法:this.check_val_left.forEach((item,index,array)=>{//执行代码});
6、js的sort排序?
就是需要写一个简单的排序函数,作为参数放到sort函数里面
this.check_val_left.sort(sortNumber);
function sortNumber(a, b)
{
return b - a;
}
二、vue实现穿梭框效果
1、效果图

2、代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>穿梭框</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
<link rel="stylesheet" type="text/css" href="css/index.css">
<script src='js/vue.js'></script>
<script src='js/index.js'></script>
</head>
<body>
<div id='my'>
<div class="container">
<div class="row">
<!--左侧-->
<div class="col-xs-5 col-sm-5" >
<div class="panel panel-success">
<!--标题-->
<div class="panel-heading">
<h3 class="panel-title">列表1<span>2</span></h3>
</div>
<!--内容-->
<div class="panel-body panel-height">
<ul> <li v-for="(data1,index) in data_left">
<input :value="index" type="checkbox" v-model="check_val_left">
{{data1.name}}
</li>
</ul>
</div>
</div>
</div>
<!--中间-->
<div class="col-xs-2 col-sm-2 transfer">
<div class="transfer-table">
<a class="transfer-cell" @click="left_move()">>></a>
<a class="transfer-cell" @click="right_move()"><<</a>
</div> </div>
<!--右侧-->
<div class="col-xs-5 col-sm-5" >
<div class="panel panel-success">
<!--标题-->
<div class="panel-heading">
<h3 class="panel-title">列表2 <span>2</span></h3>
</div>
<!--内容-->
<div class="panel-body panel-height">
<ul>
<li v-for="(data2,index2) in data_right">
<input :value="index2" type="checkbox" v-model="check_val_right">
{{data2.name}}
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</body> <script>
var vue_my=new Vue({
el: '#my',
data: {
data_left: [
{id:1,name:'北京'},
{id:2,name:'上海'},
{id:3,name:'深圳'},
],
data_right: [
{id:11,name:'重庆'},
{id:12,name:'成都'},
{id:13,name:'贵州'},
],
check_val_left:[],
check_val_right:[],
},
methods:{
left_move:function () {
//要把这个数组排序
this.check_val_left.sort(sortNumber);
this.check_val_left.forEach((item,index,array)=>{
//执行代码
//console.log(item);
//将data_left对应索引的数据移动到右边去
this.data_right.push(this.data_left[item]);
//console.log(this.data_left);
this.data_left.splice(item, 1);
});
//忘记把这个数组置空了
this.check_val_left=[];
},
right_move:function () {
//console.log(this.check_val_right);
this.check_val_right.sort(sortNumber);
this.check_val_right.forEach((item,index,array)=>{
//执行代码
//console.log(item);
//将data_left对应索引的数据移动到右边去
this.data_left.push(this.data_right[item]);
//console.log(this.data_left);
this.data_right.splice(item, 1);
});
this.check_val_right=[];
}
}
})
</script> <script>
function sortNumber(a, b)
{
return b - a;
}
</script> </html>
vue实现穿梭框效果的更多相关文章
- vue Transfer 穿梭框
Element Transfer组件默认支持单个list的穿梭 现业务需要支持两个list,效果如下 实现思路: 1.有选中才可穿梭 2.已穿梭源数据减少.目标增加(双向) 边界条件: 存储旧List ...
- 如何在vue+element中实现选择框和穿梭框的根据拼音以及拼音首字母以及汉字的模糊搜索
1.汉字: 直接添加对应的 filterable 2.拼音: 穿梭框和选择器的实现方式有所不同 选择器: <1>下载pinyin-match: npm i --save ...
- vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询
vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询 基于element Transfer http://element-cn.eleme.io/#/zh-CN/comp ...
- vue实现全选框效果
vue实现全选框效果 一.总结 一句话总结: 全选的checkbox点击的时候判断这个checkbox的状态,如果没选中,说明下一个操作是选中所有 下面的每个checkbox判断一下是否所有的chec ...
- Vue实现拖拽穿梭框功能四种方式
一.使用原生js实现拖拽 点击打开视频讲解更加详细 <html lang="en"> <head> <meta charset="UTF-8 ...
- 【vue系列】elementUI 穿梭框右侧获取当前选中项的值的思路
最近 做了一个需求 在查询结果的表格中,选取(可多选)一些值,获取到保单号后,打开一个elementUI的穿梭框,然后获取到所有业务员,选取一些业务员后,将上一步获取到的保单号传递给业务员. 画个示意 ...
- VUE+ElementUI实现左侧为树形结构、右侧无层级结构的穿梭框
工作中遇到一个需求,需要将一个数据选择做成穿梭框,但是要求穿梭框左侧为树形结构.右侧为无层级结构的数据展示,ElementUI自身无法在穿梭框中添加树形结构,网上搜到了大佬封装的插件但是对于右侧的无树 ...
- krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦
博客地址:https://ainyi.com/81 基于 element ui 的==升级版穿梭框组件==发布到 npm 啦 看过我之前博客的同学或许知道我之前写过关于 element 穿梭框组件重构 ...
- 基于Vue实现拖拽效果
参考地址:基于Vue实现拖拽效果 参考链接中讲的比较详细,我只使用了其中自定义指令的方法.整体代码如下: <template> <!-- 卡片 --> <div clas ...
随机推荐
- nodejs入门API之url模块+querystring模块
关于URL的一些基础内容 URL模块的API解析 URL的参数URLSearchParams类 querystring模块 一.关于URL的一些基础内容 1.1 定义: 在WWW上,每一信息资源都有统 ...
- TypeScript入门七:TypeScript的枚举
关于枚举 数字枚举 字符串枚举 异构枚举 计算的和常量成员 运行时的枚举与反向映射 常量枚举与外部枚举 一.关于枚举 枚举:一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计 ...
- SourceTree撤销commit
参考链接:http://blog.csdn.net/gang544043963/article/details/71511958 重点是:选中提交之前的版本,再进行撤销回退
- [转]Spring Security Oauth2 认证流程
1.本文介绍的认证流程范围 本文主要对从用户发起获取token的请求(/oauth/token),到请求结束返回token中间经过的几个关键点进行说明. 2.认证会用到的相关请求 注:所有请求均为po ...
- Redis二进制安全概念
二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改.破译等,如果被攻击,能够及时检测出来. 二进制安全包含了密码学的一些东西,比如加解密.签名等. 举个例子,你把数据1111000 ...
- 猫眼 top_100 爬取 ___只完成了第一页
# python 3.7 from urllib.request import Request,urlopen import time,re,csv class Maoyan(object): def ...
- 关于HA(双机冗余接口)
HA是双机接口,即说明这款防火墙支持双机冗余并行运行模式,可以用同型号的两台机器同时接上联和下联线路,并用线路将两台机器的HA口连接起来,达到协同工作,并行运行的功能. 高可用性H.A.(High A ...
- Linux下zookeeper集群搭建
Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...
- ArrayList 和 Vector 的区别是什么?(未完成)
ArrayList 和 Vector 的区别是什么?(未完成)
- 【Leetcode】【中等】【36. 有效的数独】【JavaScript】
题目描述 36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次.数字 1-9 在每一列只能出现一次.数字 1- ...