ExtJS[Desktop]实现图标换行示例代码


Posted in Javascript onNovember 17, 2013

ExtJS中的desktop的demo中,默认的图标排列是不换行的,这就造成了如果桌面上的图标过多的话,当超出桌面区域,会造成图标遮盖,即超出桌面区域的部分会被任务栏遮挡,以下代码就是为了解决这一问题的。

首先,在desktop.js中扩展一个函数。

initShortcut : function() { 
var btnHeight = 64; 
var btnWidth = 64; 
var btnPadding = 30; 
var col = {index : 1,x : btnPadding}; 
var row = {index : 1,y : btnPadding}; 
var bottom; 
var numberOfItems = 0; 
var taskBarHeight = Ext.query(".ux-taskbar")[0].clientHeight + 40; 
var bodyHeight = Ext.getBody().getHeight() - taskBarHeight; 
var items = Ext.query(".ux-desktop-shortcut"); for (var i = 0, len = items.length; i < len; i++) { 
numberOfItems += 1; 
bottom = row.y + btnHeight; 
if (((bodyHeight < bottom) ? true : false) && bottom > (btnHeight + btnPadding)) { 
numberOfItems = 0; 
col = {index : col.index++,x : col.x + btnWidth + btnPadding}; 
row = {index : 1,y : btnPadding}; 
} 
Ext.fly(items[i]).setXY([col.x, row.y]); 
row.index++; 
row.y = row.y + btnHeight + btnPadding; 
} 
}

然后在当前的js文件中的createDataView方法中,添加一个监听器。
createDataView: function () { 
var me = this; 
return { 
xtype: 'dataview', 
overItemCls: 'x-view-over', 
trackOver: true, 
itemSelector: me.shortcutItemSelector, 
store: me.shortcuts, 
tpl: new Ext.XTemplate(me.shortcutTpl), 
listeners:{ 
resize:me.initShortcut 
} 
}; 
}

再者,在afterRender渲染结束时调用函数。
afterRender: function () { 
var me = this; 
me.callParent(); 
me.el.on('contextmenu', me.onDesktopMenu, me); 
Ext.Function.defer(me.initShortcut,1); 
}
Javascript 相关文章推荐
js几个验证函数代码
Mar 25 Javascript
数组方法解决JS字符串连接性能问题有争议
Jan 12 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
Sep 05 Javascript
javascript基本包装类型介绍
Apr 10 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
Jun 18 Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 #Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 #Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 #Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 #Javascript
jquery在项目中做复选框时遇到的一些问题笔记
Nov 17 #Javascript
jQuery学习之prop和attr的区别示例介绍
Nov 15 #Javascript
JQuery Highcharts 动态生成图表的方法
Nov 15 #Javascript
You might like
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
如何运行Python程序的方法
2013/04/21 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Django 反向生成url实例详解
2019/07/30 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
就业意向书范文
2014/04/01 职场文书
暑假家长评语大全
2014/04/17 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
采购内勤岗位职责
2015/04/13 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Django debug为True时,css加载失败的解决方案
2021/04/24 Python