sencha touch listItem 拖拽处理
来源:互联网 发布:mysql语句优化总结 编辑:程序博客网 时间:2024/06/06 08:53
因为ListItem 是从store 中取到的一行行数据,不太好进行拖拽处理,
上面的Control
control : {msg : {initialize : 'msgListInitalize',itemtouchstart: 'onItemtouchstart'},
这是页面初始化时候的控制
view.element.on({ dragstart: { fn: this.onDragStart, order: 'before', delegate :'.list-item', scope:me }, dragend: { fn: this.onDragEnd, delegate :'.list-item', scope:me }});
/** * 点击item绑定拖拽配置 */ onItemtouchstart: function( self, index, target, record, e, eOpts ) { if (target.getDraggable() == null) { var objDomMore = Ext.get(target.element.query('.more')).last().getWidth();target.setDraggable({direction:'horizontal', constraint: { min: { x: -objDomMore, y: 0 }, max: { x: 0, y: 0 } }}); } var listitems = self.getViewItems(); Ext.each(listitems,function(obj) { // 未被点击item的拖拽配置去除 if (obj != target) obj.setDraggable(null);}) }, onDragStart: function(self, e, dom1, dom2, eOpts) { var axis={};axis.start={x:self.previousX,y:self.previousY};axis.move={x:self.pageX,y:self.pageY};axis.abs={x:Math.abs(self.pageX-self.previousX),y:Math.abs(self.pageY-self.previousY)} var obj = Ext.get(self.getTarget()); var obj1 = obj.parent().parent(); var objEc = Ext.getCmp(obj1.getId()); var list = this.getMsg(); var scrolly = list.getScrollable().getIndicators().y; var domListItem = dom1.parentNode.parentNode; var objDomMore = Ext.get(domListItem.querySelector('.more')).getWidth(); if (objDomMore == 0) {// 如果没有操作栏,则去除拖拽行为 objEc.setDraggable(null); return false; } /** 如果有折叠部分内容让其全部显示则不能拖动 */ var objDomstretch = Ext.get(domListItem.querySelector('.stretch')); if(objDomstretch!=null){ objEc.setDraggable(null); return false; } /** 判断初始的拖拽方向 */ if (axis.abs.x < axis.abs.y) {// 上下拖动时,把拖拽配置除去 objEc.setDraggable(null); scrolly.setHidden(false); } else {// 左右拖拽时,禁止页面滚动并隐藏滚动条 list.setScrollable(false); scrolly.setHidden(true); } }, onDragEnd: function(self, e, dom1, dom2, eOpts) { var obj = Ext.get(self.getTarget()); var obj1 = obj.parent().parent(); var objEc = Ext.getCmp(obj1.getId()),draggable = objEc.getDraggable(); var list = this.getMsg(); /** 超过操作栏宽度一半时会拖拽成功,否则回弹原始状态 */ if (draggable && draggable.offset) { var offsetObj = Ext.clone(draggable.offset),offset = offsetObj.x; var domListItem = dom1.parentNode.parentNode; var objDomMore = Ext.get(domListItem.querySelector('.more')).getWidth(); if (Math.abs(offset)>objDomMore/2) { if(offset > 0) { offsetObj ={x:0,y:0}; } else { offsetObj ={x:-objDomMore,y:0}; } } else { if(offset > 0) { offsetObj ={x:-objDomMore,y:0}; } else { offsetObj ={x:0,y:0}; } } draggable.getTranslatable().translate(offsetObj.x, offsetObj.y); if (offsetObj.x==0)// 操作栏隐藏时,拖拽配置去除 objEc.setDraggable(null); } var scrolly = list.getScrollable().getIndicators().y; if (scrolly.isHidden()) {// 如果滚动禁止状态下,list恢复滚动 list.setScrollable(true); } }, 下面是我的页面代码结构图<pre name="code" class="javascript"> new Ext.XTemplate('<div class="list-item">','<div class="{[this.getRightStyle(values.message.content, values.isRead)]}">','<h3><b>{message.title}</b></h3><p class="collapse">{message.content}</p><span>{message.publishDate}</span></div>','<div linkModule="{message.linkModule}" url="{message.url}" class="more {[this.getMoreCss(values.message.linkType)]}">','<span class="detail icon-detail {[this.getMoreStyle(values.message.linkType)]}" style="text-align: center;"></span>' +'<span class="del icon-trash" style="text-align: center;"></span></div>','</div>',)
0 0
- sencha touch listItem 拖拽处理
- Sencha Touch
- sencha touch
- sencha touch
- Sencha touch 2 store 处理超时的处理事件
- Sencha Touch 程序设计之 Android 平台 Back 按键处理
- sencha touch中处理Android返回按钮事件
- Sencha Touch 自定义主题
- sencha touch 资料整理
- PhoneGap,sencha touch
- Sencha+touch+开发指南
- sencha-touch-calendar控件
- 使用sencha-touch-checkbox
- sencha touch插件
- 开始Sencha Touch 2
- sencha touch发送消息
- sencha touch 功能简介
- Sencha Touch 2.0发布
- mysql集群安装配置
- hKVtKzRrFj
- 960网格,一个web时代的标志。
- ubuntu中查看各种设备和资源的命令汇总
- Android横向滚动屏幕特效分析 (笔记)
- sencha touch listItem 拖拽处理
- ubuntu环境eclipse配置
- 判断路径是文件还是文件夹的API
- hcywMiekvD
- 样式化复选框(Styling Checkbox)
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- 学习学习再学习-作者:李笑来
- DbXImObXHh
- 如何在MyEclipse中设置JVM内存