实现点击数字--上下移动操作

215 阅读1分钟

实现点击数字--上下移动操作

image.png

      <div v-for="(item,index) in list" :key="item.sum" class="my-list">
            <!-- 操作之后的要变化的数据 -->
            <div>{{item.sum}}</div>
            <!-- 要操作的数据 -->
            <div
                v-for="icon in iconList"
                :key="icon.value"
                @click="handleClick(icon.value,index)">
                {{icon.label}}
            </div>
        </div>
    </div>
    var app7 = new Vue({
        el: "#app",
        data: {
            list: [
                {
                    sum: 1,
                },
                {
                    sum: 2,
                },
                {
                    sum: 3,
                },
                {
                    sum: 4,
                },
            ],
            iconList: [
                {
                    value: "up",
                    label: "上移",
                },
                {
                    value: "down",
                    label: "下移",
                },
                {
                    value: "top",
                    label: "置顶",
                },
                {
                    value: "bottom",
                    label: "置底",
                },
                {
                    value: "del",
                    label: "删除",
                },
            ],
        },
        methods: {
            handleClick(value, index) {
                if (value === "up") {
                    if (index === 0) return;
                    // es5方式交换数据位置
                    // const lists = [...this.list];
                    // let result = lists[index]; //定义一个变量
                    // lists[index] = lists[index - 1]; //交换
                    // lists[index - 1] = result; //再交换
                    // this.list = lists; //重新赋值

                    // es6解构赋值方式
                    const list = [...this.list];
                    [list[index],list[index -1]] = [list[index -1],list[index]]
                    this.list = list
                }
                else if(value === 'down'){
                    if(this.iconList.length - 1 === index) return
                    const list = [...this.list];
                    [list[index],list[index +1]] = [list[index +1],list[index]] 
                    this.list = list
                } 
                else if(value === 'top'){
                    const list = [...this.list];
                    const item = list.splice(index,1)[0]
                    list.unshift(item)
                    this.list = list
                }
                else if(value === 'bottom') {
                    const list  = [...this.list];
                    const item = list.splice(index,1)[0]
                    list.push(item)
                    this.list = list

                }
                else if(value === 'del'){
                    this.list.splice(index,1)
                }
            },
        },
    });
  </script>