๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Dev/Web

[Vue] Drag And Drop ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ (2)

๋ฐ˜์‘ํ˜•

 

[Vue] Drag and Drop

 


๐Ÿ’ก Part 3. Drag & Drop ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„ํ•˜๊ธฐ

  • ๋“œ๋ž˜๊ทธํ•  ์•„์ดํ…œ์— @dragstart="startDrag($event, item)" ์ถ”๊ฐ€ํ•˜๊ธฐ
    • startDrag ๋ฉ”์†Œ๋“œ
       // startDrag
       const startDrag = (event, item) =>{
         event.dataTransfer.dropEffect = "move";
         event.dataTransfer.effectAllowed = "move";
         event.dataTransfer.setData("selectItem", item.content);
       }โ€‹
  • ๋“œ๋ž˜๊ทธ ์˜์—ญ์— @drop="onDrop($event,์˜์—ญ๋ฒˆํ˜ธ)" ์ถ”๊ฐ€ํ•˜๊ธฐ
    • onDrop ๋ฉ”์†Œ๋“œ
      // ๋“œ๋กญ ๋ถ€๋ถ„
      const onDrop = (event, list) => {
        const selectItem = event.dataTransfer.getData("selectItem"); // ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋กญํ•œ ์•„์ดํ…œ
        var tmp = [];
        if (list == 1) { // leftList
          const item = state.rightList.find(
            (item) => item.content == selectItem
          );
          state.leftList.push(item); // ์ขŒ์ธก ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋ฅผ ํ•ด์ฃผ๊ณ 
          state.rightList.forEach((q) => { // ์šฐ์ธก์—์„œ๋Š” ๋นผ์ค€๋‹ค.
            if (q.content != item.content) tmp.push(q);
          });
          state.rightList = tmp;
        } 
        else { // right List
          const item = state.leftList.find(
            (item) => item.content == selectItem
          );
          state.rightList.push(item);
          state.leftList.forEach((q) => {
            if (q.content != item.content) tmp.push(q);
          });
          state.leftList = tmp;
        }
      };


๐Ÿ’ก Part 4. ๋™์ž‘ ํ™•์ธํ•˜๊ธฐ

 

๋™์ž‘ ํ™•์ธ ์˜์ƒ

 

 

CPDM

 

choppadontbiteme.tistory.com

 

๋ฐ˜์‘ํ˜•