angular6中怎么实现H5的drop和dragover

clipboard.png
上面几个循环生成的li需要拖动交换位置,哪里松开时就放在哪里

clipboard.png

<div class="testJq">
<ul>

<li *ngFor="let i of dropArr;let dataIndex=index;" draggable="true" class="dropLi">
  <span>{{i.title}}</span>
   <ul>
     <li *ngFor="let y of i.state" draggable="true" class="dropJob">{{y.name}}</li>
   </ul>
   </li>

</ul>
</div>

import { Component, OnInit } from '@angular/core';
import * as $ from 'jquery';
@Component({
selector: 'app-drop',
templateUrl: './drop.component.html',
styleUrls: ['./drop.component.css']
})
export class DropComponent implements OnInit {
dropArr:any=[
{"title":1,'state':[{'name':'job11'},{'name':'job12'}]},
{"title":2,'state':[{'name':'job21'},{'name':'job22'}]},
{"title":3,'state':[{'name':'job31'},{'name':'job32'}]},
{"title":4,'state':[{'name':'job41'},{'name':'job42'}]},
{"title":5,'state':[{'name':'job51'},{'name':'job52'}]}
]
startCardIndex:number=0;
overCardIndex:number=0;
constructor() { }
ngOnInit() {
}
ngAfterViewInit(){
//开始拖
let temp=this.dropArr;
let startCardIndex:any='';
let overCardIndex:any='';
let startCardJobIndex:any='';
let overCardJobIndex:any='';
let startJobIndex:any='';
let overJobIndex:any='';
let aaa;
let bbb;
$(".dropLi").on("dragstart",function(e){

    startJobIndex=''
    startCardIndex=$(this).index()
    aaa=temp[startCardIndex]
    console.log('1*********')
    e.stopPropagation()
        })
  //放下

$(".dropLi").on("drop",function(e){

  e.preventDefault()
  e.stopPropagation()
  console.log('2*********')
  if(startJobIndex==''){
  console.log(startJobIndex)
   temp.splice(startCardIndex,1)
   overCardIndex=$(this).index()
   temp.splice(overCardIndex,0,aaa);
   console.log('切割');
  }
  else{
    console.log('我')
  }
console.log(888888)

})

//拖动job

$(".dropJob").on("dragstart",function(e){
 //startCardJobIndex='';
  startCardJobIndex= $($(this).parent("ul").parent("li")).index()
 startJobIndex=$(this).index()
 console.log(startCardJobIndex,startJobIndex)
 //overJobIndex='';
 bbb=temp[startCardJobIndex].state[startJobIndex]
  e.stopPropagation()
        })
$(".dropJob").on("drop",function(e){
overCardJobIndex= $($(this).parent("ul").parent("li")).index()
 overJobIndex=$(this).index()
 if(startCardJobIndex!==overCardJobIndex){
   alert("禁止拖拽");
   return false;
 }else{

 }
 console.log(overCardJobIndex,overJobIndex)
//console.log(($(this).index()))
//temp[]
e.stopPropagation()
e.preventDefault()

// overJobIndex=$(this).index()

})

  //允许拖

$(".dropLi").on("dragover",function(e){

            e.preventDefault()
})
$(".dropJob").on("dragover",function(e){
            e.preventDefault()
        })

}
}

阅读 2.1k
2 个回答

angular 没有提供drag drop的插件,使用原生的drag drop event就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题