`
yiminghe
  • 浏览: 1465663 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ext.DD portal示例

阅读更多

Ext.DD 子模块是很好的对拖放这样一个实现起来很麻烦的功能的封装,架构很清晰,接口很明确.最终使用 DropZone 与 DragZone即可.

 

----------------------------
DragDrop
  DDTarget
    DropTarget
      DropZone
-----------------------------
DragDrop
  DD
    DDProxy
      DragSource
        DragZone

 

官方单独使用的例子比较少,今天阅读拖放模块源代码后,稍微熟悉一下与拖放模块的交互接口,写了个单独使用的例子:


简单拖放@google code

 


简单拖放源码@google code


portal演示@google code

 

portal源码@google code


jquery portal 比较:(转自javaeye网友)

 

jq portal演示@google code

 

jq portal源码@google code

 

细节体会:


1. Ext.DD 没有采用事件机制,仅仅采用 override 方法来实现通知。

2. DropZone 有容器以及容器内多个可drop区域的概念,容器通过 notifyOver 再通知各个 drop 区域,在每个通知中我们只需考虑当前是否在单个drop子区域并进行处理,不需要考虑整个容器,而注册时只需要对容器进行拖放注册,只需指明哪些属于应该关注的子区域, 基本上还是事件委托的理念,不用对个个子区域监听mousedown事件,改做容器监听。

 

3. Jquery 方式可见没有采用事件委托,对每个子区域都单独定义了拖放事件,并且也没有公用拖放代理对象,可见Ext.DD当拖放对象极多时还是性能应该会更好一点。

4. 例子expamles/dd/dragdropzones.js 存在bug :

getDragData: function(e) {
            var sourceEl = e.getTarget(v.itemSelector, 10);
            if (sourceEl) {
                d = sourceEl.cloneNode(true);
                d.id = Ext.id();
                return v.dragData = {
                    sourceEl: sourceEl,
                    repairXY: Ext.fly(sourceEl).getXY(),
                    ddel: d,
                    patientData: v.getRecord(sourceEl).data
                }
            }
        },

 

ddel 当 invalid drag drop时,会发生 ddel.highlight 。
若传 d 则 highight 不会有效果(在复制节点上)。
修正:

 

var sourceEl = e.getTarget(v.itemSelector, 10);
            if (sourceEl) {
                               return v.dragData = {
                    sourceEl: sourceEl,
                    repairXY: Ext.fly(sourceEl).getXY(),
                    ddel: sourceEl,
                    patientData: v.getRecord(sourceEl).data
                }
            }
 


其实 DragZone 已经clone了:

onInitDrag : function(x, y){
        this.proxy.update(this.dragData.ddel.cloneNode(true));
        this.onStartDrag(x, y);
        return true;
    },
 



但是做的不好,可能clone出重复 id 节点。
修正:

 

onInitDrag : function(x, y){
        var t=this.dragData.ddel.cloneNode(true);
         t.id=Ext.id();// prevent duplicate ids
        this.proxy.update(t);
        this.onStartDrag(x, y);
        return true;
 },
 


extjs 例子没有修改 DragZone ,而为了防止重 id ,在例子中自己clone,但是失去了 highlight 的效果.

4
0
分享到:
评论
1 楼 yiminghe 2012-05-08  
superchinaren 写道
请问在拖动时鼠标点击的位置与拖动的对象不一致这个问题怎么解决。比如我在一个DIV的正中间点击后再拖动。此时鼠标指针自动给移动到了DIV的最左上角。


可以换 kissy 试试 :)

http://docs.kissyui.com/kissy/src/dd/demo/portal.html

相关推荐

    Ext portal例子

    在示例中,这可能通过`Ext.dd.DragDropManager`和相关插件实现。 4. **数据绑定(Data Binding)** 门户中的数据可以动态更新,例如新闻标题的实时刷新。这得益于Ext JS的数据模型和Store机制,可以将数据源与UI...

    EDR( Endpoint Detection and Response:端点检测和响应)测试数据,这些数据可能来自主流工具 用于学习探索性分析

    示例数据说明:这个 JSON 数据结构非常全面且详细地记录了一次与端点检测和响应相关的事件信息,从事件本身的基础情况、涉及的设备、文件、进程到各种描述、时间、风险状态等多方面进行了呈现,多条这样的记录组成的数据集可用于安全分析、威胁追踪、系统监控等众多相关场景。 《DuckDB:JSON数据探索性分析实战教程》博客中使用的数据,地址:https://blog.csdn.net/neweastsun/article/details/144592773?sharetype=blogdetail&sharerId=144592773&sharerefer=PC&sharesource=neweastsun&spm=1011.2480.3001.8118

    2024年汽车市场行情及小米首款SUV发布与智驾数据积累

    内容概要:本报告分析了2024年汽车市场的行情,包括新能源汽车和传统汽车的销售情况。小米汽车首款SUV小米YU7正式发布,将于2025年上市。头部新势力智驾系统的数据积累迅速,特别是理想和鸿蒙智行等企业。特斯拉计划推出新车型Model Q,定价低于3万美元。小马智行与广汽埃安达成战略合作,共同推动Robotaxi的商业化落地。 适合人群:汽车行业分析师、投资者、汽车爱好者和市场研究人员。 使用场景及目标:帮助了解2024年汽车市场的动态,特别是在新能源汽车、自动驾驶技术和市场合作方面的新进展。为投资者和企业提供决策支持。 其他说明:报告提供了详细的市场数据和趋势分析,有助于评估市场潜力和风险。

    流程优化项目过程中流程梳理过程方法

    流程优化项目过程中流程梳理过程方法

    INTERNET TRENDS 2015 – CODE CONFERENCE

    INTERNET TRENDS 2015 – CODE CONFERENCE

    一款低代码生成器,可根据自定义模板内容,快速生成代码,实现项目的快速开发、上线,减少重复的代码编写,开发人员只需专注业务逻辑即可

    一款低代码生成器,可根据自定义模板内容,快速生成代码,实现项目的快速开发、上线,减少重复的代码编写,开发人员只需专注业务逻辑即可。

    基于循环神经网络的情感分类系统源代码(完整前后端+mysql+说明文档+LW).zip

    该系统功能较为简单,核心功能即为文本检测,主要针对系统中的用户留言,进行情感分类。其次为了进一步提升系统的丰富性,我们可以加入数据管理模块,允许系统管理员对系统自动识别的分类进行校对;加入数据分析的模块,可以将系统识别的统计结果以图像的形式直观的呈现给系统使用者;加入公告管理的功能,为系统提供一个推广宣传的窗口;最后加入用户管理的模块,进一步保障系统的安全性。 环境说明: 开发语言:python Python版本:3.6.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:pycharm

    Yet Another BACnet Explorer 源码

    Yet Another BACnet Explorer 源码

    黑客奥峰内置[云更新]不拉回加速.apk

    黑客奥峰内置[云更新]不拉回加速.apk

    c# winfrom开发的ODB++查看器1.0,内核算法优化

    c# winfrom开发的ODB++查看器1.0,内核算法优化

    万国觉醒宝石脚本自己学习写的

    自己学习python写的脚本 仅供学习使用

    基于java+springboot+vue+mysql的智能学习平台系统 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、vscode 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

    闪迪U盘加密工具SanDiskV3-Win

    SanDisk SecureAccess 软件包括以下几个主要文件: SanDiskV3_win.exe:这是软件的安装程序,用户可以通过双击该文件并遵循安装向导来完成安装。在安装过程中,用户需要设置一个密码,以保护虚拟保险箱中的文件。 Back Up Your Files to the Cloud.pdf:这是一个 PDF 文件,提供了将文件备份到云端的指南。SanDisk SecureAccess 不仅提供本地加密存储,还鼓励用户将重要文件备份到云服务,以实现数据的双重保护。该文档可能包含详细的步骤说明,指导用户如何使用 SanDisk 或其他云存储服务进行文件备份。 SanDiskV3.0:这个文件可能是软件的另一个组件或特定版本的更新文件,具体用途可能需要在安装或运行软件时才能明确。

    毕业设计-吃豆人AI游戏.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    基于小程序的“最多跑一次”微信小程序源代码(完整前后端+mysql+LW).zip

    功能说明: 实现了首页、个人中心、用户管理、民警管理、服务信息管理、类型管理、预约信息管理、报案信息管理、立案信息管理、案件进展管理、系统管理等内容进行管理。环境说明: 开发语言:Java 服务器:tomcat7及以上 JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11及以上 开发软件:eclipse/idea 小程序框架:uniapp/原生小程序 开发工具:HBuilder X/微信开发者。。。

    2-mysq8027_auto_dbsql.bat

    2-mysq8027_auto_dbsql

    基于vue期末大作业 网上商城PC端项目源码+文档+高分项目+全部资料.zip

    【资源说明】 基于vue期末大作业 网上商城PC端项目源码+文档+高分项目+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    JMB585 Datasheet 2.01

    智微科技(JMicron)推出的新款PCIe to SATA桥接芯片,支持PCIe Gen3 x2 转5口SATA 3.0(6G接口),这是网上能找到的免费的最新版数据手册。

    【瑞达期货-2024研报】聚氯乙烯市场周报.pdf

    【瑞达期货-2024研报】聚氯乙烯市场周报.pdf

    基于java+springboot+vue+mysql的多媒体素材库 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、vscode 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

Global site tag (gtag.js) - Google Analytics