五步掌握Ext的拖放(下)

接上篇URL:http://blog.csdn.net/zhangxin09/archive/2010/05/03/5551665.aspx

第三步:设置置下目标

明确需求是怎么样的:除了 rented
repair
可接纳拖动元素,cars和trucks本身也是可以的。总之是使用
DDTarget
来负责放下的目标。代码如下:

//Instantiate instances of Ext.dd.DDTarget for the cars and
trucks container
var carsDDTarget = new Ext.dd.DDTarget('cars','carsDDGroup');
var trucksDDTarget = new Ext.dd.DDTarget('trucks', 'trucksDDGroup');

//Instantiate instnaces of DDTarget
for the rented and repair drop target elements
var rentedDDTarget = new Ext.dd.DDTarget('rented', 'carsDDGroup');
var repairDDTarget = new Ext.dd.DDTarget('repair', 'carsDDGroup');

//Ensure that the rented and repair
DDTargets will participate in the trucksDDGroup
rentedDDTarget.addToGroup('trucksDDGroup');
repairDDTarget.addToGroup('trucksDDGroup');

上述代码中,为 cars
trucks、
rented

repair
设置了置下目标。注意cars
容器的元素只能参与“carsDDGroup”的拖动,trucks
容器的元素只能参与“trucksDDGroup”的拖动。接着是rented

repair
DDTarget
设置,这里有构造器的定义carsDDGroup,也有addToGroup方法加入的trucksDDGroup,两种途径皆可。

OK,已经设置好置下目标了。下面是有效置下后的结果。

点击图片
打开演示。

我们看见这些拖动元素的确是成功到达目的地,可是图片摆放的乱七八糟,还是要整理一下才行,也就是继续所说的“完成置下complete
drop”的这一步骤。同样也是重写DD
实例的方法。

第四步:完成置放

实质是用DOM方法把始发点的元素改换到目标父级元素上。重写下面的onDragDrop
方法。

// 拖放过程成功了就执行该方法e
onDragDrop : function(evtObj, targetElId) {
// 建立置下目标的Ext.Element实例
var dropEl = Ext.get(targetElId);

// 不在同一drop区域里面的才算完成drop。同一个target目标没意义。
if (this.el.dom.parentNode.id != targetElId) {

// 移动元素
dropEl.appendChild(this.el);

// Remove the drag invitation
this.onDragOut(evtObj, targetElId);

// 清除样式
this.el.dom.style.position ='';
this.el.dom.style.top = '';
this.el.dom.style.left = '';
}
else {
// 无效的drop
this.onInvalidDrop();
}

不在同一drop区域里面的才算完成投放置下。同一个target目标没意义,视作无效drop,故执行onInvalidDrop。

 

点击以上图片
观看完整的置下操作。

只要可以成功置下,父级元素辖下的元素就不复存在,移动到置下目标上。

如果拖动的时候进入了有效地目标范围内,用户是不是应该给予他们一点提示呢?下面的就是一个drop邀请,就是告诉用户您快来吧,可以置下喽。

第五步:加入邀请置下(drop invitation)

如上述,此时此刻我们重写的是 onDragEnter
以及 onDragOut
方法。

// Only called when the drag element is dragged over the a drop
target with the same ddgroup
onDragEnter : function(evtObj, targetElId) {
// 添加CSS颜色
if (targetElId != this.el.dom.parentNode.id) {
this.el.addClass('dropOK');
}
else {
// 移除邀请
this.onDragOut();
}
},
// 当离开拖动范围的时候触发
onDragOut : function(evtObj, targetElId) {
this.el.removeClass('dropOK');
}

当然了,onDragEnter
以及 onDragOut
只会在同一个DD组里面的交互才会生效。

onDragEnter

方法在鼠标指针刚刚碰到置下区域其边缘的时候就会触发,反之,onDragOut
方法就是离开边缘的时候就会立刻触发。

 

点击以上的图片
演示drop邀请。

通过演示,我们可以看进入可投下的区域的时候就会高亮的现实效果(周围是绿色的),离开该一区域就不会显示。

继续阅读

Ext JS框架中很多组件都可以使用拖放,总之不一而足。通过下面不同的例子来继续进一步深化拖放操作的学习(官方的):

摘要

今天的学习过程中,我们了解了怎么使用最底层的拖放类实现来进行DOM节点的完整拖放。希望阁下能收获到DD操作的一些基本操作原理,并且我们希望,在以后的日子,可以就该方面写更多的文章。

 

时间: 2024-10-27 13:40:50

五步掌握Ext的拖放(下)的相关文章

五步掌握Ext的拖放(上)

五步掌握Ext的拖放 5 Steps to Understanding Drag and Drop with Ext JS September 13, 2009 by Jay Garcia 翻译:frank 那么多的交互设计模式中,"拖放(Drag and Drop)"模式是开发者感觉比较不错的.用户日常在进行拖放操作的时候,真的是想都不用想地就可以轻松搞掂了,易学易用,非常直观.下文中,不是我们断言,只要将下面五个步骤的要义领会在心,拖放不再是一件难事. 定义拖放 拖动(drag)的

用户研究分析:进行用户研究的五步方法

文章描述:进行用户研究的五步法. 想象一下,这就是你所了解的我:大学毕业,男性,年龄在35-45岁,我有一台Mac book pro,还有一台iphone 5.我通过谷歌的chrome浏览器来上网.我公开使用微博和博客,你可以发现我喜欢巧克力和小狗.我结婚了.开着一辆丰田Corolla.我有着棕色的头发和同样棕色的眼睛.我的信用卡清单显示了我最常预定的酒店和喜欢外出就餐的场所. 如果你的金融理财客户给你提供这些信息,你可以告诉他们为什么我刚打算把我的支票及存款转移到一个新的银行吗?这种情况看起来

实例浅析:五步解答中小型旅游网站文章优化策略

中小型旅游网站没有大网站的实力和影响力,想要在高手林立的旅游网站中脱颖而出,我们要在网站内容方面下狠功夫.一般中小型旅游网站的内容建设分为产品栏目及详情页.旅游目的地相关模板内容.还有就是文章页.今天聚途旅游网小编就为大家分享一下中小型旅游网站的文章优化策略. 文章优化是网站内容优化最灵活的一个方面,可以完全控制关键词.链接.展现方式等.中小型旅游网站的文章页面的优化目的通常是作为入口页面,吸引更多新老访客.   下面就通过"文章类型"."关键词"."内外

Windows XP个人网络联机防火墙五步搞定

防火墙是一套软件或硬件,可协助保护计算机,使其免于受到黑客和许多计算机病毒的攻击.因此,在将计算机连接上网络前,应该先安装防火墙. 如果你使用的是Windows XP操作系统,就可以使用它内建的网络联机防火墙. 值得注意的是,网络联机防火墙是利用封锁某些类型的潜在有害网络通讯的方式运作,所以,它也会封锁一些有用的网络通讯工作.例如,通过网络共享档案或打印机,即时通信之类的应用程序传输档案,或作为多人游戏的主机等.但我们仍然强烈建议使用防火墙,因为它有助于立即保护你的计算机. 第一步:开启网际网络

用户调研五步高效完成不是梦

  今天分享一个Frog Design(青蛙设计)使用的用研方法,只有5步的研究方法,是一位资深交互设计师提出的,全文后还有相关书籍的推荐,想国庆期间深入研究的各位可以抱走 ( ̄ε(# ̄)☆╰ 昨天一个在做金融的妹纸吐槽用研太难.她让我打开脑洞想一下,这是你知道的客户:男,36岁,本科毕业;有一台MacBook Pro和一部iPhone 5手机,平时会Chrome浏览网页;有微博账号,在上面你会看到他喜欢巧克力和矮脚狗;已婚;座驾是丰田花冠;黑发棕眼;信用卡记录可以看到他最近一次订的酒店的位置和

五步教你找回win7系统密码

win7系统忘了密码怎么办?如何找回windows7系统密码?看了本篇文章您会发现这些问题都不成问题了: Windows 7 SP1 中文旗舰版是由微软公司(Microsoft)开发的操作系统,系统之家为提供win7官方原版系统下载,Windows 7 可供家庭及商业工作环境.笔记本电脑.平板电脑.多媒体中心等使用.第一步:于cmd在系统目录,文件更改首先要获得文件所有权.打开"D:windowssystem32"(假设Windows7安装在D 盘),右击"arrator.e

五步教你识别零闪润眼屏显示器

  随着我们周围的数码设备越来越多,由于使用习惯和设备原因都会对于我们的健康产生影响,有关眼睛视力的保护的讨论也从未停息,眼睛作为人体唯一没有皮肤覆盖的器官,非常容易受到损害,屏幕的好坏与将直接影响眼睛的感受. 海尔在润眼屏幕上的尝试已经到了第三代,这一代的"晶润润眼"屏幕采用了阿尔法黑晶涂层,透光率高达98%,减少光线折射率,降低眼睛的疲劳,将屏蔽波长超过5000MHz以上的有害光波50%以上,让画面更清晰的同时,降低对于皮肤和眼睛的伤害,这一期的学几手就较大家通过五步教你识别润眼屏

AJAX入门---五步使用XMLHttpRequest对象

         XMLHttpRequest简介:          XMLHttpRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页.当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据.XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力.XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DO

五步七招,开启最强DDoS攻防战!

五步七招,开启最强DDoS攻防战! 林伟壕 2017-02-15 10:04:52 作者介绍 林伟壕,网络安全DevOps新司机,先后在中国电信和网易游戏从事数据网络.网络安全和游戏运维工作.对Linux运维.虚拟化和网络安全防护等研究颇多,目前专注于网络安全自动化检测.防御系统构建.   本文大纲: 可怕的DDoS DDoS攻击科普 DDoS防护科普 DDoS攻击与防护实践 企业级DDoS清洗系统架构探讨   可怕的DDoS   出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低