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 相关文章推荐
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 Javascript
jQuery中:password选择器用法实例
Jan 03 Javascript
JS实现文字向下滚动完整实例
Feb 06 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
Dec 03 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
Vue一个案例引发的递归组件的使用详解
Nov 15 Javascript
javascript实现简易聊天室
Jul 12 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
深入理解Antd-Select组件的用法
Feb 25 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
Mar 03 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
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中的foreach函数
2013/08/31 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
jquery随机展示头像代码
2011/12/21 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
python中的sort方法使用详解
2014/07/25 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
简单了解Django模板的使用
2017/12/20 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python sorted函数的小练习及解答
2019/09/18 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
房产继承公证书
2014/04/09 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
体育专业求职信
2014/07/16 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
学生会干部任命书
2015/09/21 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
nginx安装以及配置的详细过程记录
2021/09/15 Servers
php png失真的原因及解决办法
2021/11/17 PHP
Python first-order-model实现让照片动起来
2022/06/25 Python
详解MySQL的内连接和外连接
2023/05/08 MySQL