最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用vuedraggable插件實(shí)現(xiàn)拖拽效果

 更新時(shí)間:2024年04月01日 10:16:41   作者:魚(yú)干~  
這篇文章主要介紹了vue使用vuedraggable插件實(shí)現(xiàn)拖拽效果,本文分步驟介紹了安裝vuedraggable插件的方法及頁(yè)面引入的方法,需要的朋友可以參考下

技術(shù)
ant design vue1.7.8 的UI框架、
vue2.x版本

場(chǎng)景:需要實(shí)現(xiàn)div拖拽的效果

效果圖:

第一步:安裝vuedraggable插件

//npm方式安裝
npm i -S vuedraggable
//或使用yarn安裝
yarn add vuedraggable

第二步:在頁(yè)面引入組件 script代碼塊里

<script>
//第一步 ***.引入組件
import draggable from 'vuedraggable'
export default {
  components: {
    draggable, //***.第二步 
  },
  data() {
    return {
      tagsList: [],
      treeClass: '',
      classList: [],
      checkedCategoryKeys: [],
      categoryTree: [],
      defaultProps: {
        children: 'subGroupList',
        title: 'groupName',
        key: 'groupCode',
      },
      eventSelectedNode: null,
      isLoading: false,
    }
  },
  created() {
    this.load_init()
  },
  methods: {
    //拖拽動(dòng)作   ***.第三步 拖拽完成事件
    onDraggableUpdate(e) {
      this.isLoading = true
      setTimeout(() => {
        this.isLoading = false
        //老位置
        const oldIndex = e.oldIndex
        //新位置
        const newIndex = e.newIndex
        const newSort = this.tagsList[e.newIndex].sort
        this.tagsList[e.newIndex].sort = this.tagsList[e.oldIndex].sort
        this.tagsList[e.oldIndex].sort = newSort
        console.log(this.tagsList)
        this.$message.success('順序變更成功!')
      }, 1000)
    },
    //初始化
    load_init() {
      for (let index = 0; index < 98; index++) {
        this.classList.push({
          value: 'val' + index,
          label: '樹(shù)層級(jí)_' + index,
        })
        this.tagsList.push({
          value: 'val' + index,
          label: '樹(shù)層級(jí)_' + index,
          //是否編輯
          isEditName: false,
          //排序
          sort: index,
          //loading
          isLoading: false,
        })
      }
    },
  },
}
</script>

template代碼塊

      <div class="bodyRight">
        <div class="bodyRightTitle">
          <div><span>標(biāo)簽池</span></div>
          <div><a-button type="primary">導(dǎo)入Excel</a-button></div>
        </div>
        <div class="bodyRightLabel">
          <a-spin :spinning="isLoading">
          <!-- ***.下面是第四步 -->
            <draggable
              v-model="tagsList"
              class="bodyRightdraggable"
              @sort="onDraggableUpdate"
              animation="300"
              chosenClass="chosen"
            >
              <transition-group v-for="item in tagsList" :key="item.value">
                <a-tag
                  class="tabs"
                  :key="item.value"
                  @close="deleteTag(item)"
                  style="margin-bottom: 5px"
                  @dblclick="handleDblClick(item)"
                >
                  <span class="a-select__tags-text tagname" v-if="!item.isEditName">
                    <CEllipsis :length="8" :tooltip="true">
                      {{ item.label }}
                    </CEllipsis>
                    <div title="刪除"><a-icon type="close" @click.stop="removeLabel(item)" /></div>
                  </span>
                  <a-input
                    v-else
                    :ref="'input_' + item.value"
                    v-model="item.label"
                    :maxLength="22"
                    @pressEnter="sumbitLabel(item)"
                    placeholder="請(qǐng)輸入標(biāo)簽名稱(chēng)"
                    @blur="sumbitLabel(item)"
                  ></a-input>
                </a-tag>
              </transition-group>
            </draggable>
          </a-spin>
        </div>
      </div>

style代碼塊

    .bodyRight {
      width: 65%;
      height: 100%;
      .bodyRightTitle {
        width: 100%;
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding-bottom: 10px;
        line-height: 18px;
      }
      .bodyRightLabel {
        width: 100%;
        height: 90%;
        overflow-y: auto;
        border: 2px solid #d9d9d9;
        border-radius: 4px;
        display: flex;
        flex-wrap: wrap;
        justify-content: flex-start;
        align-content: flex-start;
        .bodyRightdraggable {
          display: flex;
          flex-wrap: wrap;
          padding: 10px;
        }
        .tabs {
          width: 125px;
          height: 35px;
          border: 1px dashed #ccc;
          border-radius: 25px;
          font-size: 16px;
          align-items: center;
          display: flex;
          cursor: pointer;
          .tagname {
            width: 100%;
            display: flex;
            justify-content: space-between;
          }
          i {
            display: none;
          }
          &:hover {
            i {
              font-size: 16px;
              color: red;
              display: inline-block;
            }
          }
        }
        //***.第五步 樣式
        .chosen {
          .tabs {
            border: 1px solid #1890ff;
            background-color: #fff !important;
            color: #1890ff;
            cursor: move;
          }
        }
      }
    }

注意點(diǎn):

1.我的vuedraggable版本是2.24.3
2.官網(wǎng)文檔地址:https://www.itxst.com/vue-draggable/tutorial.html

到此這篇關(guān)于vue使用vuedraggable插件實(shí)現(xiàn)拖拽效果的文章就介紹到這了,更多相關(guān)vue vuedraggable拖拽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vuex中遇到的坑,vuex數(shù)據(jù)改變,組件中頁(yè)面不渲染操作

    vuex中遇到的坑,vuex數(shù)據(jù)改變,組件中頁(yè)面不渲染操作

    這篇文章主要介紹了vuex中遇到的坑,vuex數(shù)據(jù)改變,組件中頁(yè)面不渲染操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 解決vue頁(yè)面DOM操作不生效的問(wèn)題

    解決vue頁(yè)面DOM操作不生效的問(wèn)題

    下面小編就為大家分享一篇解決vue頁(yè)面DOM操作不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Vue實(shí)現(xiàn)版本檢測(cè)與升級(jí)提示

    Vue實(shí)現(xiàn)版本檢測(cè)與升級(jí)提示

    在現(xiàn)代Web應(yīng)用開(kāi)發(fā)中,版本檢測(cè)與升級(jí)提示是提升用戶(hù)體驗(yàn)的重要環(huán)節(jié),本文將詳細(xì)介紹如何在Vue應(yīng)用中實(shí)現(xiàn)這一功能,有需要的小伙伴可以參考一下
    2025-04-04
  • 使用Vue?CLI配置代碼壓縮、加密和混淆功能示例代碼

    使用Vue?CLI配置代碼壓縮、加密和混淆功能示例代碼

    這篇文章主要介紹了使用Vue?CLI配置代碼壓縮、加密和混淆功能,通過(guò)配置 vue.config.js 文件,我們可以使用 Vue CLI 輕松實(shí)現(xiàn)對(duì) Vue 應(yīng)用程序代碼的壓縮、加密和混淆,需要的朋友可以參考下
    2023-06-06
  • 解決vue中this.$set()不更新問(wèn)題

    解決vue中this.$set()不更新問(wèn)題

    我在做一個(gè)附件刪除功能的時(shí)候發(fā)現(xiàn),明明打印出來(lái)附件已經(jīng)沒(méi)有數(shù)據(jù)了但是頁(yè)面就是不刷新, this.$set()不生效,所以本文小編給大家介紹了vue中this.$set()不更新的解決方法,需要的朋友可以參考下
    2023-11-11
  • 深入理解Vue-cli4路由配置

    深入理解Vue-cli4路由配置

    Vue-router是Vue官方的路由插件,本文將結(jié)合實(shí)例代碼,介紹Vue-cli4路由配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • vue+px2rem實(shí)現(xiàn)pc端大屏自適應(yīng)的實(shí)例代碼(rem適配)

    vue+px2rem實(shí)現(xiàn)pc端大屏自適應(yīng)的實(shí)例代碼(rem適配)

    不管是移動(dòng)端的適配,還是大屏需求,都離不開(kāi)不一個(gè)單位rem,rem是相對(duì)于根元素的字體大小的單位,下面這篇文章主要給大家介紹了關(guān)于vue+px2rem實(shí)現(xiàn)pc端大屏自適應(yīng)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 解決vue項(xiàng)目中頁(yè)面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問(wèn)題

    解決vue項(xiàng)目中頁(yè)面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問(wèn)題

    今天小編就為大家分享一篇解決vue項(xiàng)目中頁(yè)面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 手把手教你寫(xiě)一個(gè)vue全局注冊(cè)的Toast的實(shí)現(xiàn)

    手把手教你寫(xiě)一個(gè)vue全局注冊(cè)的Toast的實(shí)現(xiàn)

    本文主要介紹了手把手教你寫(xiě)一個(gè)vue全局注冊(cè)的Toast的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Vue?3?進(jìn)階用法之異步組件

    Vue?3?進(jìn)階用法之異步組件

    為了解決加載組件中出現(xiàn)的報(bào)錯(cuò)、超時(shí)、狀態(tài)展示等問(wèn)題,可以使用?Vue?3?提供的異步組件(Async?Components),它對(duì)于加載過(guò)程做了更細(xì)致的控制,這篇文章主要介紹了Vue?3?進(jìn)階用法之異步組件,需要的朋友可以參考下
    2024-04-04

最新評(píng)論

商城县| 化州市| 彭阳县| 镇原县| 策勒县| 太和县| 宁阳县| 镶黄旗| 巴塘县| 津南区| 广河县| 磴口县| 陵川县| 普宁市| 保靖县| 东台市| 津南区| 泌阳县| 湘阴县| 霸州市| 银川市| 八宿县| 贺州市| 太和县| 孟村| 阳西县| 龙口市| 兰溪市| 牙克石市| 霍山县| 汤阴县| 昂仁县| 泸西县| 临邑县| 清新县| 益阳市| 四平市| 淮阳县| 湘潭县| 吐鲁番市| 常山县|