1
我正在研究Ionic 2項目,我想實現拖放功能。對於這一點,我用波紋管事件離子2Ionic 2 ** panup **和** pandown **事件不起作用
<div (press) = "onDragInit(item, $event)"
(panstart)="dragStart($event)"
(panup)="onDrag($event)"
(pandown)="onDrag($event)"
(panend)="onDragEnd($event)"
(pressup)="pressUpEvent($event)">
</div>
問題是panup和pandown事件並不是第一次合作。
如果我們先做了水平移動,那麼這兩個事件都可以正常工作。 但是,如果我們先做了垂直移動,那麼這兩個事件在進行水平移動之前都不起作用。 有沒有人遇到過這個問題?
這是我的.ts文件
public onDragInit(doc, event): void {
if(!doc.isSelected){
return;
}
// hide selected docs when start the drag
this.docs.forEach((doc: any) => {
if(doc.isSelected){
doc.dragging = true;
this.draggingDocs.push(doc);
}else{
doc.dragging = false;
}
});
this.dragPoint = this.getDragPoint(event.center.x, event.center.y);
this.docDragging = true;
this.destination = this.getDroppableDoc(event.center.x,event.center.y);
event.preventDefault()
}
public dragStart(event: any): void {
if(!this.docDragging){
return ;
}
event.preventDefault();
}
public onDrag(event: any):void {
if(!this.docDragging){
return ;
}
this.dragPoint = this.getDragPoint(event.center.x, event.center.y);
let placeForDrop = this.getDroppableCar(event.center.x, event.center.y);
if(placeForDrop != null && placeForDrop.doc != null){
this.destination = placeForDrop;
}
event.preventDefault();
}
public onDragEnd(event: any): void {
if(this.destination && this.destination.doc){
this.onDrop.emit({draggingDocs: this.draggingDocs,destination: this.destination});
}
this.cancelDragging();
event.preventDefault();
}
public pressUpEvent(event: any): void {
this.cancelDragging();
event.preventDefault();
}
你可以添加事件被觸發的.ts頁面嗎? –
在後來的Ionic2版本中似乎有所改變。這用於工作,但現在event.center X和Y在平移事件中始終爲零,因此無法準確知道平底鍋座標從我所能看到的位置處結束。 – Johncl
我也注意到,如果我聽任何泛的事件,如果我點擊並平移向上或向下平移之前它確實設置event.center座標是正確的,但從不,如果我只是點擊,然後立即上下。很奇怪。似乎是ionic2正在吃這些事件的原因。 – Johncl