Extjs拖放

时间:2015-09-07 14:35:59

标签: javascript extjs

我想将节点从树面板拖放到面板上。我已经将树配置为使用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

我做错了什么?

1 个答案:

答案 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');