javascript - 放置完成时的拖放事件

标签 javascript drag-and-drop dojo

我有一个使用 dijit/Treedijit/tree/dndSource 的项目,用户可以使用拖放来移动树项目以进行更改。我正在使用 dojo 版本 1.10.4请参阅此处的 jsfiddle

Dojo Tree w/drag and drop

我需要在转换完成时收到通知。看起来 onDndDrop 显然是捕获此事件的地方,但文档表明,扰乱此事件不是一个好主意:

dojo/dnd documentation

来自上面的文档...

主题处理器

定义了以下主题监听器:onDndSourceOver、onDndStart、onDndDrop、onDndCancel。这些主题由经理发布。如果您想覆盖主题监听器,请阅读主题摘要。

Summary of topics

警告:在大多数情况下您想要使用事件。主题是低级构造,在内部使用,通常不应该用于自定义。

---------结束文档------------

那么,我如何才能收到放置完成时的通知,以便我可以使用 ajax 更新服务器端的某些项目?我需要的是使用 dijit/tree/dndSource 对象提供的 onDndDrop 事件,但文档说不应该弄乱它。在上面的 jsfiddle 示例中,我在 tree 对象创建中注释掉了 //onDndDrop:treeDropEvt, 。如果将其添加到树创建中,当用户将树项移动到树中的另一个位置时,treeDropEvt 将被调用,但可以在控制台中看到错误并且移动不会发生。

如果我必须使用 onDndDrop 事件,我该如何创建它,这样我就不会收到错误并且它可以正常运行???

最佳答案

我在TreeStoreModelpasteItem函数中做了你想做的事情。 TreeStoreModel 是 Dojo Tree 的存储。

 var memoryStore = new Memory({
            data: [{
               id: "root",
               name: "ROOT",
               loaded: true
            }, ],
            getChildren: function(object) {
               return this.query({
                  parent: object.id
               });
            },
            clearOnClose:true
         });

var myStore = new Observable(memoryStore);

 var myModel = new TreeStoreModel({
                store: myStore,
                query: {
                   id: "root"
                },
                labelAttr: "label",
                pasteItem: function(child, oldParent, newParent, copy, insertIndex) {
                   // SEND NOTIFICATION, DO QUERIES
                }
             });

var tree = new Tree({
            model: myModel,
            dndController: dndSource
});

关于javascript - 放置完成时的拖放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43352071/

相关文章:

javascript - 自动运行 Javascript 函数

javascript - 使用 JavaScript 移动图像

javascript - Unslider 将 .active 类添加到事件元素?

javascript - 使用 jQuery 拖放防止点击事件

dojo - 如何从 dijit.form.Select 获取选项文本?

javascript - Anchor 的下载属性在某些页面 (Gmail) 上不起作用?

html - 拖放区的视觉 HTML5 效果不错?

javascript - 通过拖放非 Kendo UI 小部件获取 Kendo UI 模型

javascript - 如何使用 JQuery 重定向,加载另一个页面但在请求中发送了一些 POST 参数?

javascript - 无法运行实习生功能测试。错误 : [POST http://localhost:4444/wd/hub/session] connect ECONNREFUSED