美文网首页
Sortable.js拖拽v-for渲染的元素以及注意事项

Sortable.js拖拽v-for渲染的元素以及注意事项

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-08-29 19:56 被阅读0次

    一、安装插件Sortable.js

    npm i  sortablejs --save
    或者
    yarn add sortablejs --save
    

    二、引入

    /* 引入插件 */
    import Sortable from "sortablejs";
    

    三、拖拽区html

    key取的随机数--目的为了每次拖拽后重新渲染
    id="fieldCtr"取的这个dom一定是最外围的元素(拖拽区域),不能放到循环体内

          <!-- 未显示字段 -->
            <div id="fieldCtr" :key="domKey">
              <div v-for="item in list" :key="item.label">
                <div>{{ item.label }}</div>
              </div>
            </div>
    

    四、初始化

      mounted() {
        this.drag();
      },
    

    五、拖拽事件

        /**
         * 拖拽事件
         */
        drag() {
          const _this = this;
          const wrapperTr = document.getElementById("fieldCtr");
          this.sortable = Sortable.create(wrapperTr, {
            animation: 180,
            delay: 0,
            onEnd: (evt) => {
              // 跳过显示的列数量,如开头我们用了一个多选框,h和序号
              const oldItem = this.list[evt.oldIndex];
              this.list.splice(evt.oldIndex, 1);
              this.list.splice(evt.newIndex, 0, oldItem);
             // 每一次拖拽后都要重绘一次
              _this.reDrawPop();
            },
          });
        },
    

    六、重绘事件

       /**
         * 触发重绘
         */
        reDraw() {
          this.domKey = Math.random();
          this.$nextTick(() => {
            this.drag();
          });
        },
    

    相关文章

      网友评论

          本文标题:Sortable.js拖拽v-for渲染的元素以及注意事项

          本文链接:https://www.haomeiwen.com/subject/qhhomdtx.html