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 ...
随机推荐
- 数据库入门(mySQL):创建数据库
基于JetBrains DataGrip创建数据库.SQL语句创建数据库 MySQL数据库存储引擎和数据类型 创建数据库表及基本操作 导出数据库.删除数据库.导入数据库 一.基于JetBrains D ...
- S2-016、S2-017
前言 由于S2-016.S2-017出现的原因时相同的,只是由于poc不一样,造成了不同的攻击.S2-016是RCE,S2-017是开发型重定向漏洞.这里将两个漏洞放一起分析.另外“Struts2系列 ...
- 最全排序算法原理解析、java代码实现以及总结归纳
算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间非比较类排序:不通过 ...
- 关于Python的第一行语句
通常在脚本语言的第一行会看到#!/usr/bin/env python 与 #!/usr/bin/python其中之一,这两句话的目的都是指出你的python文件用什么可执行程序去运行它. #!/us ...
- Canal的简单使用(监控数据库数据的变化)
原文:https://www.cnblogs.com/java-spring/p/8930740.html canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据,用于实际工作中,比 ...
- NLP传统基础(2)---LDA主题模型---学习文档主题的概率分布(文本分类/聚类)
一.简介 https://cloud.tencent.com/developer/article/1058777 1.LDA是一种主题模型 作用:可以将每篇文档的主题以概率分布的形式给出[给定一篇文档 ...
- LevelDB的源码阅读(一)
源码下载 git clone https://github.com/google/leveldb.git 项目结构 db/, 数据库逻辑 doc/, MD文档 helpers/, LevelDB内存版 ...
- 第81题:搜索旋转排序数组II
一. 问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] ). 编写一个函数来判断给定的目标值是 ...
- c#调用
一.基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是 ...
- 控制warning信息在控制台的显示
在运行代码时,有时出现warning信息, 1.当你后台不需要warning信息的时候,可以直接把warning信息省略掉. 2.如果代码是循环,则会在控制台打印多次warning信息,这会使得war ...