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 相关文章推荐
jQuery 使用手册(二)
Sep 23 Javascript
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
查找Oracle高消耗语句的方法
Mar 22 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
Dec 30 Javascript
node.js从数据库获取数据
May 08 Javascript
详解mpvue开发小程序小总结
Jul 25 Javascript
微信小程序新手教程之启动页的重要性
Mar 03 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 Javascript
深入了解JavaScript词法作用域
Jul 29 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
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python守护进程实现过程详解
2020/02/10 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
倩碧英国官网:Clinique英国
2018/08/10 全球购物
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
初中三好学生自我鉴定
2014/04/07 职场文书
欢迎新生标语
2014/10/06 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
工作会议通知
2015/04/15 职场文书
小学科学课教学反思
2016/02/23 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis