思路:
用兩個數組分別記錄左右框框里面的值,用兩個數組綁定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; }
效果如下:

代碼實現:
<!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>
