929web终端界面bug调试
928web终端界面
背景颜色
看到panel是有颜色的,使用了渐变色。
.x-panel-body-default {
filter: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#ffffff,endColorStr=#99b9ff);
background: -ms-linear-gradient(top,#ffffff,#99b9ff);
background: -moz-linear-gradient(top,#ffffff,#99b9ff);
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#ffffff), to(#3399ff));
/* border-color:#157fcc; */
color: black;
font-size: 13px;
font-size: normal;
border-width: 1px;
border-style: solid;
}
手动布局
me.SettingPanel.doLayout();有啥作用?
var tree = Ext.create('Ext.tree.Panel',{
title:'网络和位置设置',
renderTo:'SettingPasswordID',
width:300,
//id : 'ShineTreePanel',
height:500,
store: store,
rootVisible: false,
listeners: {
itemclick:function(tree, record, item, index, e, eOpts){
var title = record['data']['text'];
//me.initShineComp();
me.SettingPanel.removeAll();
if(title=='网络状态'){
me.SettingPanel.add(me.formStatus);
}else if (title=='服务器设置'){
me.addShineServerFormPanel();
me.SettingPanel.add(me.formServer);
}else if (title=='有线设置'){
me.addShineOnlineFormPanel();
me.SettingPanel.add(me.formOnline);
}else if (title=='无线设置'){
me.addShineOutlineFormPanel();
me.SettingPanel.add(me.formOutline);
}
me.SettingPanel.doLayout();
}
}
});
me.SettingPanel = Ext.create('Ext.panel.Panel',{
width:700,
height:500,
border:0,
renderTo:'spanId',
items:[me.formServer]
});
页面bug
出现的原因是,panel作为一个容器,在每次点击切换的时候,并没有采取card进行布局,而是利用了removeAll,add的方式来切换。这样做,看起来没有啥大问题。但是如果add的items,有延时事件,在延时的过程中,点切换,直接就因为removeAll,将所有的items移处了,延时时间执行的时候,就再也找不到相关的dom节点了,然后就报错了。针对此bug的代码对比如下:
有bug的代码:
listeners: {
itemclick:function(tree, record, item, index, e, eOpts){
var title = record['data']['text'];
var panel=me.SettingPanel;
panel.removeAll();//暴力移除,再重间
if (title=='服务器设置'){
me.addShineServerFormPanel();//再这个里面会再次重建
panel.add(me.formServer); //然后这个是重建后的item
}
panel.doLayout();
}
}
修改后的代码:
listeners: {
itemclick:function(tree, record, item, index, e, eOpts){
var title = record['data']['text'];
var panel=me.SettingPanel;
var layout = panel.getLayout();
if (title=='服务器设置'){
me.addShineServerFormPanel(); //这个里面加上判断,如果有了,就不要再重建呢。
layout.setActiveItem(1);
}
panel.doLayout();
}
}
//例外,修改布局
me.SettingPanel = Ext.create('Ext.panel.Panel',{
width:700,
height:500,
border:0,
renderTo:'spanId',
layout:'card',//修改成card布局
activeItem:1,//默认显示第二个
items:[me.formStatus,me.formServer,me.formOnline,me.formOutline]
});