以下是Ext4 的desktop桌面图标换行问题网上流传的解决方法 (是存在问题的)
init: function() {
this.callParent();
this.initShortcut();
}
注意 自定义函数 init 要放在 callParent 的下面。否则页面初始化的时候。没有换行。只有在变换页面高度的时候,才换行。
initShortcut:function(){
//shortcuts 自动换行
var btnHeight = 70;//61
var btnWidth = 64;
var btnPadding = 35;//15
var col = null;
var row = null;
function initColRow(){
col = {
index: 1,
x: btnPadding
};
row = {
index: 1,
y: btnPadding
};
}
initColRow();
function isOverflow(y){
//if(y > (Ext.lib.Dom.getViewHeight() - taskbarEl.getHeight())){
if(y>Ext.get('ext-gen1003').getHeight()-Ext.get('taskbar-1024').getHeight()){
return true;
}
return false;
}
this.setXY = function(item){
var bottom = row.y + btnHeight,
overflow = isOverflow(row.y + btnHeight);
if(overflow && bottom > (btnHeight + btnPadding)){
col = {
index: col.index++,
x: col.x + btnWidth + btnPadding
};
row = {
index: 1,
y: btnPadding
};
}
Ext.fly(item).setXY([
col.x
, row.y
]);
row.index++;
row.y = row.y + btnHeight + btnPadding;
};
this.handleUpdate = function(){
initColRow();
//var items=shortcuts.dom.children;
var items = Ext.query(".ux-desktop-shortcut");
for(var i = 0, len = items.length; i < len; i++){
this.setXY(items[i]);
}
}
this.handleUpdate();
//每过 500 毫秒重绘页面
Ext.EventManager.onWindowResize(this.handleUpdate, this, {
delay:500
});
//end shortcuts 自动换行
}
问题:
依据此方法修改后,当浏览器窗口大小改变后桌面图标才会换行显示,第一次进入应用程序后桌面图标任然没有换行显示
解决方法:
在this.handleUpdate(); 后加
Ext.Function.defer(this.handleUpdate, 500, this, []);