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 相关文章推荐
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
JQuery+Ajax无刷新分页的实例代码
Feb 08 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
10条建议帮助你创建更好的jQuery插件
May 18 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
js微信分享实现代码
Oct 11 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
vue实现简单loading进度条
Jun 06 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
探索node之事件循环的实现
Oct 30 Javascript
JavaScript实现表单验证功能
Dec 09 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的一个登录的类 [推荐]
2007/03/16 PHP
使用php计算排列组合的方法
2013/11/13 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python实现员工管理系统
2018/01/11 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python 实现屏幕录制示例
2019/12/23 Python
Python列表解析操作实例总结
2020/02/26 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
python help函数实例用法
2020/12/06 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
高一生物教学反思
2014/01/17 职场文书
初中家长寄语
2014/04/02 职场文书
分公司经理任命书
2014/06/05 职场文书
朋友聚会开场白
2015/06/01 职场文书
房屋质量投诉书
2015/07/02 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
Mysql 设置boolean类型的操作
2021/06/04 MySQL