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 相关文章推荐
Javascript Tab 导航插件 (23个)
Jun 11 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
Javascript事件热键兼容ie|firefox
Dec 30 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
全面解析Bootstrap图片轮播效果
Dec 03 Javascript
html+js实现简单的计算器代码(加减乘除)
Jul 12 Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
Sep 26 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
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
js触发onchange事件的方法说明
2014/03/08 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
Python中使用PIPE操作Linux管道
2015/02/04 Python
python 统计代码行数简单实例
2017/05/04 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
学Python 3的理由和必要性
2019/11/19 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
python如何修改文件时间属性
2021/02/05 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
党员民主评议总结
2014/10/20 职场文书
2014年幼师工作总结
2014/11/22 职场文书
教师学期个人总结
2015/02/11 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers