zoukankan      html  css  js  c++  java
  • Vue之vuedraggable拖拽排序用法

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <title>vue.draggable例子</title>
        <meta name="viewport"
            content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
        <script src="http://www.itxst.com/package/vue/vue.min.js"></script>
        <script src="http://www.itxst.com/package/sortable/Sortable.min.js"></script>
        <script src="http://www.itxst.com/package/vuedraggable/vuedraggable.umd.min.js"></script>
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
        <style scoped>
            .item {
                padding: 6px;
                background-color: #fdfdfd;
                border: solid 1px #eee;
                margin-bottom: 10px;
                cursor: move;
                position: relative;
            }
    
            span {
                position: absolute;
                top: 0;
                left: 0;
            }
    
            .item:hover {
                background-color: #f1f1f1;
                cursor: move;
            }
    
            .chosen {
                border: solid 2px #3089dc !important;
            }
    
            .box {
                width: 100%;
                height: 500px;
                overflow: auto;
                background-color: #efafaf;
            }
    
            img {
                width: 100%;
            }
    
            .scrollbar-5::-webkit-scrollbar-track {
                background-color: rgba(0, 0, 0, 0.1);
                border-radius: 5px;
                margin-right: -10px;
            }
    
            .scrollbar-5::-webkit-scrollbar {
                width: 5px;
                height: 5px;
            }
    
            .scrollbar-5::-webkit-scrollbar-thumb {
                background-color: #666;
                border-radius: 5px;
            }
            .box{
                display: flex;
            }
            .imgBox{
                width: 150px;
                height: 150px;
                overflow: hidden;
            }
        </style>
    </head>
    
    <body style="padding:10px;">
        <div id="app">
            <div class="box scrollbar-5">
                <draggable v-model="myArray" chosen-class="chosen" :scroll="true" force-fallback="true" animation="150"
                    @start="onStart" @end="onEnd">
                    <div class="item" v-for="element in myArray" :key="element.id">
                        <div class="boxs">
                            <div class="imgBox">
                                <img :src="element.name" alt="">
                            </div>
                            <p>
                                {{element.ids}}
                            </p>
                        </div>
                    </div>
                </draggable>
            </div>
        </div>
        <script>
            // 全局注册组件
            Vue.component('vuedraggable', window.vuedraggable)
            var app = new Vue({
                el: '#app',
                components: {
                    vuedraggable: window.vuedraggable, //当前页面注册组件
                },
                data() {
                    return {
                        drag: false,
                        myArray: [{
                                people: 'cn',
                                id: 1,
                                name: 'http://test-fileservice.syrjia.cn/uploadFiles/topic/1598595047053.jpg',
                                ids: '哈哈哈'
                            },
                            {
                                people: 'cn',
                                id: 2,
                                name: 'http://test-fileservice.syrjia.cn/uploadFiles/topic/1598595047053.jpg',
                                ids: '嘻嘻嘻嘻'
                            },
                            {
                                people: 'cn',
                                id: 3,
                                name: 'http://test-fileservice.syrjia.cn/uploadFiles/topic/1598595047053.jpg',
                                ids: '啦啦啦'
                            },
                            {
                                people: 'us',
                                id: 4,
                                name: 'http://test-fileservice.syrjia.cn/uploadFiles/topic/1598595047053.jpg',
                                ids: '呵呵呵呵'
                            }
                        ],
                        lastArr: []
                    };
                },
                mounted() {
                    this.myArray = JSON.parse(sessionStorage.getItem("myArray"))
                },
                methods: {
                    onStart() {
                        this.drag = true;
                    },
                    onEnd() {
                        this.drag = false;
                        //拖拽完成后的顺序
                        let arr = []
                        this.myArray.forEach((item) => {
                            arr.push(item.id)
                        })
                        console.log(arr)
                        //拖拽后利用localStorage记录顺序
                        localStorage.arr = arr;
                        var localSt = localStorage.arr;//已经存储起来的排序后的id
                        //如果有localst记录则,按照这个进行排序元素
                        if (localSt) {
                            console.log(localSt)
                            var resArr = localSt.split(',');
                            var resUl = $('.box>div:eq(0)');
                            //li 数组
                            // for (var i = 0; i < resArr.length; i++) {
                            //     resUl.append($("#" + resArr[i]));
                            // }
                            let arrSort = [];//定义一个变量,用来存储排序后id对应的数据
                            for (let index = 0; index < resArr.length; index++) {//循环已经存储到localStorage中的数组id
                                const element = resArr[index];
                                console.log(element)
                                this.myArray.map(item => {//循环已经获取到的数组数据,根据存储到localStorage中的Id匹配到对应的数据
                                    if (item.id == resArr[index]) {
                                        arrSort.push(item)
                                    }
                                });
    
                            }
                            this.myArray = arrSort
                            console.log(this.myArray, '哈哈')
                  //将排序后的存储到sessioStorage中 sessionStorage.setItem(
    'myArray', JSON.stringify(this.myArray)) } }, } }); // console.log($(".box")) </script> </body> </html>
  • 相关阅读:
    推荐一款天气App 知心天气
    [推荐]Android DoraemonKit 工具
    推荐一款互动式追星神器App爱豆陪陪
    推荐一款语音直播连麦App YAMI
    推荐一款健康App 多喝水,引领全民时尚喝水生活习惯
    推荐一款万年历App 诸葛万年历
    [原创]A/B测试系统调研思维导图
    推荐一款走路赚钱App爱步行
    2条最佳实践App疯狂增长逻辑
    推荐分享AB测试服务商
  • 原文地址:https://www.cnblogs.com/fkcqwq/p/13626960.html
Copyright © 2011-2022 走看看