javascript - 将拖放代理置于指针的中心

标签 javascript extjs drag-and-drop extjs4 extjs4.1

我正在使用 ExtJS 拖放,并尝试将拖动代理置于光标下方(代理:代表被拖动元素的半透明填充符)。我可以像这样将其物理居中,但之后它不会正确下降:

view.dragZone = Ext.create('Ext.dd.DragZone', view.getEl(), {

    onStartDrag: function(x, y) {
        this.setDelta(150, 20); // (the element is 300 x 40)
    },

    //.. other DD configs

});

当我使用它并将光标移动到放置区域时,它只会滑回到原始位置,就像我将其随机放置在某个地方一样。

如果我不使用此功能,光标将位于对象西北方向约 20 像素处(即不居中),但我可以将其完全放置在放置区域中。

我认为这可能与光标没有直接位于放置区域有关,因为它现在直接位于拖动代理上。我尝试重置拖放区域的 z 索引,尝试将其置于拖动代理之上,但这似乎不起作用。尝试了其他一些非常随机的事情,不值得一提。

有人成功设置了拖放操作,使拖动代理以光标为中心吗?

最佳答案

我能够将代理居中并在grid drag/drop plugin的实时预览中看到它正确下降。 .

Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name'],
    data: [["Lisa"], ["Bart"], ["Homer"], ["Marge"]],
    proxy: {
        type: 'memory',
        reader: 'array'
    }
});

var p = Ext.create('Ext.grid.Panel', {
    store: 'simpsonsStore',
    columns: [
        {header: 'Name',  dataIndex: 'name', flex: true}
    ],
    viewConfig: {
        plugins: {
            ptype: 'gridviewdragdrop',
            dragText: 'Drag and drop to reorganize'
        }
    },
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

p.view.plugins[0].dragZone.onStartDrag = function() {
    this.setDelta(80, 10);
};

Ext.view.DragZone 看起来与 Ext.dd.DragZone 没有太大区别。然而,Ext.view.DropZone 添加了大量逻辑来检查记录被删除的位置。我猜测这个逻辑可能就是网格拖放插件的拖放工作正常的原因。

关于javascript - 将拖放代理置于指针的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15261167/

相关文章:

asp.net-mvc - 不允许拖动另一个父树中的父树 - Kendo 拖放 Treeview

JavaScript/jQuery 在两个 iframe 之间拖放元素

javascript - Vue.js 2.0 主实例

javascript - 覆盖 iframe 内容 css

android - Sencha 触摸 2 : switch between two panels with a "fade" animation?

javascript - 对具有点分隔数字的属性的对象数组进行排序

javascript - 如何使用 JavaScript 和 Raphael 旋转之前拖动的 SVG 对象?

javascript - 如何修复 React Native 中的 "Tried to register two views with the same name RNGestureHandlerButton"?

javascript - 无法使用 ext js 删除类

javascript - 一个单元格中的多个值作为组合框