我想将节点从树面板拖放到面板上。我已经将树配置为使用treeviewdragdrop插件,如下所示:
Ext.define('APP.view.SampleTreeView', {
extend: 'Ext.tree.Panel',
alias: 'widget.sampleTreeView',
store: 'SampleTreeStore',
rootVisible: false,
renderTo: Ext.getBody(),
columns: [
{ xtype: 'treecolumn', dataIndex: 'text', flex: 1 }
],
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop',
dragGroup: 'editorDDGroup'
},
}
});
然后,我在目标面板上创建了drop zone:
Ext.onReady(function () {
var DDTarget = new Ext.dd.DDTarget('tgtPanel', 'editorDDGroup', {})
});
tgtPanel定义:
Ext.define('APP.view.TargetPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.targetPanel',
id: 'tgtPanel',
renderTo: Ext.getBody(),
width: 400,
height: 200,
title: 'Target Panel'
});
现在,可以拖动树节点,并且在目标面板上有一个绿色复选标记,表示允许丢弃,但是当我释放鼠标时,我得到ext-all.js未捕获类型错误:Cannot read property 'focus' of undefined
我做错了什么?
答案 0 :(得分:1)
我意外地偶然发现了解决方案,而不是使用Ext.dd.DDtarget
我使用Ext.dd.DropTarget
。
之前:
var DDTarget = new Ext.dd.DDTarget('tgtPanel', 'editorDDGroup', {})
后:
var DDTarget = new Ext.dd.DropTarget(me.getEl().dom, {
notifyDrop: function (dragsource, event, data) {
//
},
});
panelDropTarget.addToGroup('editorDDGroup');