zoukankan      html  css  js  c++  java
  • Vue基础之vue实现穿梭框效果(5)

    思路:

    用两个数组分别记录左右框框里面的值,用两个数组绑定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>
  • 相关阅读:
    形象理解ERP(转)
    禁用windows server 2008 域密码复杂性要求策略
    How to adding find,filter,remove filter on display method Form
    Windows Server 2008 R2激活工具
    How to using bat command running VS development SSRS report
    Creating Your First Mac AppGetting Started
    Creating Your First Mac AppAdding a Track Object 添加一个 Track 对象
    Creating Your First Mac AppImplementing Action Methods 实现动作方法
    Creating Your First Mac AppReviewing the Code 审查代码
    Creating Your First Mac AppConfiguring the window 设置窗口
  • 原文地址:https://www.cnblogs.com/JonaLin/p/12892279.html
Copyright © 2011-2022 走看看