zoukankan      html  css  js  c++  java
  • vue-draggable两种情况下的demo

    1.左边数据不变 右边数据不能拖动到左边  
     
    代码如下:
     
    <template>
        <div class="dragDemo">
            <!--列表1-->
            <draggable class="list-group"
                       element="div"
                       v-model="listLeft"
                       :options="dragOptions1"
                       :move="onMove"
                       @start="isDragging=true"
                       @end="isDragging=false">
                <div v-for="(item,key) in listLeft" :key="key">
                    <img src="http://oss.shangmian.xin/ciBm3U1544694909000?imageslim">
                    {{item.name}}-{{item.value}}
                </div>
            </draggable>
            <!--列表2-->
            <draggable class="list-group"
                       element="div"
                       v-model="listRight"
                       :options="dragOptions2"
                       :move="onMove"
                       @start="isDragging=true"
                       @end="isDragging=false"
            >
                <div v-for="(item,key) in listRight" :key="key">
                    <img src="http://oss.shangmian.xin/ciBm3U1544694909000?imageslim">
                    {{item.name}}-{{item.value}}
                </div>
            </draggable>
        </div>
    </template>
    <script>
        import draggable from "vuedraggable";
        export default{
            name:'dragDemo',
            components:{
                draggable
            },
            data(){
                return{
                    isDragging:false,
                    listLeft:[{
                        name:'数据一',
                        value:'1'
                    },{
                        name:'数据二',
                        value:'2'
                    },{
                        name:'数据三',
                        value:'3'
                    },{
                        name:'数据四',
                        value:'4'
                    },{
                        name:'数据五',
                        value:'5'
                    }],
                    listRight:[]
                }
            },
            computed: {
                dragOptions1() {
                    return {
                        animation: 0,
                        group: {
                            name: "description",
                            pull: 'clone',
                            put: false
                        },
                        ghostClass: "ghost",
                    };
                },
                dragOptions2(){
                    return {
                        animation: 0,
                        group: "description",
                    };
                }
            },
            methods:{
                onMove({relatedContext, draggedContext}) {
                    const relatedElement = relatedContext.element;
                    const draggedElement = draggedContext.element;
                    return (
                        (!relatedElement || !relatedElement.fixed) && !draggedElement.fixed
                    );
                },
            }
        }
    </script>
    <style scoped lang="scss" rel="stylesheet/scss">
       .dragDemo{
           margin-top:50px;
           display: flex;
           justify-content: center;
           color: #555;
           .list-group{
                300px;
               border: 1px solid #ddd;
               text-align: center;
               margin-right: 50px;
               >div{
                   padding:10px;
                   border-bottom:1px dashed #ddd;
                   img{
                       25px;
                       height:25px;
                       vertical-align: middle;
                       padding-right:10px;
                   }
               }
           }
       }
    </style>
    2.左边数据不变 右边数据可拖动到左边
     
    <template>
        <div class="dragDemo">
            <!--列表1-->
            <draggable class="list-group"
                       element="div"
                       v-model="listLeft"
                       :options="dragOptions1"
                       :move="onMove"
                       @start="isDragging=true"
                       @end="isDragging=false">
                <div v-for="(item,key) in listLeft" :key="key">
                    <img src="http://oss.shangmian.xin/ciBm3U1544694909000?imageslim">
                    {{item.name}}-{{item.value}}
                </div>
            </draggable>
            <!--列表2-->
            <draggable class="list-group"
                       element="div"
                       v-model="listRight"
                       :options="dragOptions2"
                       :move="onMove"
                       @start="rightStart"
                       @end="rightEnd"
            >
                <div v-for="(item,key) in listRight" :key="key">
                    <img src="http://oss.shangmian.xin/ciBm3U1544694909000?imageslim">
                    {{item.name}}-{{item.value}}
                </div>
            </draggable>
        </div>
    </template>
    <script>
        import draggable from "vuedraggable";
        export default{
            name:'dragDemo',
            components:{
                draggable
            },
            data(){
                return{
                    isDragging:false,
                    listLeft:[{
                        name:'数据一',
                        value:'1'
                    },{
                        name:'数据二',
                        value:'2'
                    },{
                        name:'数据三',
                        value:'3'
                    },{
                        name:'数据四',
                        value:'4'
                    },{
                        name:'数据五',
                        value:'5'
                    }],
                    listRight:[],
                    oldleftlist:[]
                }
            },
            computed: {
                dragOptions1() {
                    return {
                        animation: 0,
                        group: {
                            name: "description",
                            pull:'clone'
                        },
                        ghostClass: "ghost",
                    };
                },
                dragOptions2(){
                    return {
                        animation: 0,
                        group: "description",
                    };
                }
            },
            methods:{
                onMove({relatedContext, draggedContext}) {
                    const relatedElement = relatedContext.element;
                    const draggedElement = draggedContext.element;
                    return (
                        (!relatedElement || !relatedElement.fixed) && !draggedElement.fixed
                    );
                },
                rightStart(){
                    this.oldleftlist=this.listLeft.concat();
                    this.isDragging=true;
                },
                rightEnd(){
                    this.isDragging=false;
                    //左边数据不变
                    this.listLeft=this.oldleftlist.concat();
                }
            }
        }
    </script>
    陌生人,愿你永不迷失自己,心中永远有梦去追逐。 ---随笔签名写于2020.1.3 00:28:00 博主VX:stf569318425
  • 相关阅读:
    Redis 持久化
    Redis 事务
    select poll和 epoll
    jdk信任证书
    Java中的锁分类
    mysql触发器同步远程服务器上数据库
    正则表达式
    mysql主从同步
    MySQL逗号分割字段的行列转换技巧
    Mysql中文排序
  • 原文地址:https://www.cnblogs.com/tengfeiS/p/11598054.html
Copyright © 2011-2022 走看看