我有一個SimplePanel
(或div
),它的contenteditable
屬性設置爲true
。在這個面板裏面我有另一個可拖拽div
它本身是不可編輯的,但居住在可編輯。爲什麼AttachEvent未被解僱?
擁有一個像
Text text <div draggable="true">DRAG</div> text text.
作品對我來說,到目前爲止內容。拖拽等工作到目前爲止。但是,如果光標旁邊的拖動div
和用戶點擊Backspace鍵或刪除可拖動div
被刪除過 - 而且只是要清楚這其實是我想要的東西 - 但問題是,我需要知道什麼時候這個元素被刪除,也刪除其相關的DragStartHandler
。
問題是AttachEvent
在這種情況下似乎沒有被解僱 - 或者我這樣做只是錯誤的。我的DragAndDropController
實現AttachEvent.Handler
以符合處理程序的要求。我爲每個可拖動的Widget
添加它,但我從不會看到任何日誌記錄輸出,因爲我期望。
這是我目前的解決方案:
public class DragAndDropController implements AttachEvent.Handler {
private SimplePanel textarea;
private Element currentlyDragged;
public DragAndDropController(SimplePanel textarea) {
this.textarea = textarea;
// ...
}
public void addDraggable(Widget draggable) {
DragStartHandler dragStartHandler = new DragStartHandler() {
@Override
public void onDragStart(DragStartEvent event) {
GWT.log("Drag start for .." + draggable.getElement().getId());
currentlyDragged = draggable.getElement();
event.setData("text", draggable.getElement().getId());
event.getDataTransfer().setData("text", draggable.getElement().getId());
}
};
// The handler I plan to remove ..
final HandlerRegistration addBitlessDomHandler = this.textarea.addBitlessDomHandler(dragStartHandler, DragStartEvent.getType());
draggable.addAttachHandler(this);
}
@Override
public void onAttachOrDetach(AttachEvent event) {
GWT.log("DETACH");
}
// ..
}
我希望有人能澄清。 Devtool向我展示受影響的div
從DOM樹中移除(至少它的HTML內容消失了,所以我認爲我可以做出這個假設)。