2012-11-14 125 views
0

當我將給定的面板設置爲「可拖動」時,是否存在拖動結束事件的監聽器?我發現我可以通過在其初始配置中啓用「draggable」屬性在另一個面板內拖動面板,但我希望在拖動發生時捕獲事件。看看這些文檔,我發現我可以添加諸如「load」之類的監聽器,但是我沒有看到我可以監聽的所有支持事件的列表。這可以在配置中處理,還是應該使用addListener()?無論哪種方式,語法是什麼,如何使用文檔解決這個問題?我希望能夠在我的可拖動面板在其容器周圍移動時觸發一個功能。謝謝。extjs面板的可拖動事件

var panel = Ext.create('Ext.tree.Panel', { 
    draggable: true, 
    width: 200, 
    height: 200, 
}); 

我希望我可以做這樣的事情......

var panel = Ext.create('Ext.tree.Panel', { 
    draggable: true, 
    width: 200, 
    height: 200, 
    listeners: {    
     dragging: function(e) { 
      // being dragged 
     }, 
     dropped: function(e) { 
      // dropped 
     }, 
}); 

回答

1

你不會在這種情況下listerens做到這一點。有四種模板方法,您可以覆蓋

所以,你可以不喜歡它:

var panel = Ext.create('Ext.tree.Panel', { 
    draggable: { 
     onDrag: function(e) { 
       // do what you like 
     }, 
     onEnd: function(e) { 
       // do what you like 
     } 
    }, 
    width: 200, 
    height: 200, 
}); 

注意參數e的事件對象

+0

如果你重寫onDrag,你不能拖動面板了...... – Leprosy

+0

@Leprosy不,你錯了。這些是模板方法,這意味着它們將被覆蓋。 – sra

+0

剛剛在4.1.0中用一個Window試過。方法重寫後,拖動正常行爲不起作用。 但是當窗口是可拖動的,但它確實使用ComponentDragger具有dragstart事件是,你可以監聽窗口火災。 – Leprosy

1

我試圖拖動開始之前修改在Ext.window.Window組件,並在發現sencha論壇認爲draggable窗口收聽dragstart事件,也許它也適用於Panel

我用這個代碼:

listeners: { 
    dragstart: function() { 
     console.log('we are starting the drag'); 
    } 
} 

而且工作就像一個魅力。在這裏工作在我的應用程序,使用的Ext JS 4.1.0

對於拖動的最後,我發現move事件Ext.window.Window西服的需要。

0

對於Ext.panel.Panel使用的dragstart監聽器,你需要設置simpleDrag:真。

但是,當simpleDrag處於活動狀態時,您不能拖放,只需將面板拖動/移動爲窗口即可。