ExtJS Symbolleiste nicht korrekt Rendern
Habe ich ein Fenster wo ich möchte hinzufügen eine Symbolleiste an der Spitze, und ein panel für das laden von Inhalten in den verbleibenden Bereich. Leider ist die Symbolleiste erweitert, um eine unverhältnismäßige Größe, wenn ich das Fenster "Inhalt". Ich habe versucht hartzucodieren die Größe, aber das scheint nicht zu funktionieren. Was mache ich falsch?
Dank im Voraus für die Antworten:
//Main application entry point
Ext.onReady(function() {
var loginWin;
var mainWin;
var content;
var form = new Ext.form.FormPanel({
baseCls: 'x-plain',
labelWidth: 70,
//url:'',
defaultType: 'textfield',
items: [{
fieldLabel: ' User Name',
name: 'username',
anchor:'100%' //anchor width by percentage
},{
inputType: 'password',
fieldLabel: ' Password',
name: 'password',
anchor: '100%' //anchor width by percentage
}]
});
content = new Ext.Panel({
baseCls: 'x-plain',
layout:'fit',
anchor:'90%',
height: 500,
items: [
{
title: 'blah',
html: '<div>hello</div>'
}
]
});
var tb = new Ext.Toolbar({
height: 100,
//renderTo: mainWin
});
tb.render('toolbar');
var toolbarPanel = new Ext.Panel({
layout:'fit',
anchor:'10%',
width:100,
items: tb
});
var menu = new Ext.menu.Menu({
id: 'mainMenu',
style: {
overflow: 'visible' //For the Combo popup
},
items: [
{ text: 'blah'
},
{ text: 'blah2'
}
]
});
tb.add(
{
text: 'Classes',
iconCls: 'bmenu',
handler: function(){ alert('blah'); }
},
{
text: 'GPA',
iconCls: 'bmenu',
handler: function(){ alert('blah'); }
},
{
text: 'Semester Schedule',
iconCls: 'bmenu',
handler: function(){
}
},
{
text: 'Help',
iconCls: 'bmenu', //<-- icon
handler: function(){ alert('blah'); }
}
);
tb.doLayout();
if(!mainWin){
mainWin = new Ext.Window({
applyTo:'main-win',
resizable: false,
modal: true,
layout:'fit',
width:'80%',
height:'100%',
y: 0,
closeAction:'hide',
plain: true,
items: [ toolbarPanel, content ]
});
}
if(!loginWin){
loginWin = new Ext.Window({
applyTo:'hello-win',
closable:false,
layout:'fit',
width:300,
height:130,
closeAction:'hide',
plain: true,
items: form,
buttons: [{
text:'Login',
handler: function(){
loginWin.hide();
mainWin.show();
}
},{
text: 'Close',
handler: function(){
loginWin.hide();
}
}]
});
loginWin.show(this);
}
})
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint, Sie arbeiten mit der Symbolleiste falsch:
Hier sagen Sie das panel, "Nehmen Sie ein Element, und machen es so groß wie ich". Das ist das, was layout "fit" macht. So natürlich, es nimmt die Symbolleiste, die Sie geben es in die
items
und erweitern Sie es so groß wie das panel.Ext.Panel
Objekte haben einetbar
config-Eigenschaft, die entworfen, um halten Sie Ihre Symbolleiste. Sie brauchen nicht ein panel für eine Symbolleiste und andere Fenster für den Inhalt. Stattdessen fügen Sie der Symbolleiste, um Ihren "Inhalt". Auch, Mach dir keine sorgen über das Rendern der Symbolleiste explizit oder hinzufügen von Elementen nach der Tat. Es ist besser und klarer zu schreiben, der die Objekte zusammen, wo Sie initialisiert werden (falls dies möglich ist)Hier ist, wie ich empfehlen würde, erstellen Sie Ihre Inhalte panel:
Beachten Sie auch, dass ich nahm Ihr panel
height
Attribut, da es in einem Fenster mit layout "passen", so dass die Fenster nicht alle der Größe (keine Notwendigkeit, geben Sie auf dem panel selbst).Glück!
Beachten Sie, dass die Ext.Symbolleiste hat eine Standard - minHeight Wert gesetzt ("2.6 em", iirc) - Sie können, müssen diese Einstellungen in deiner config.
Dies ist nicht Ihr Problem, aber ich hatte ein problem mit minified ExtJS-code nicht Rendern. Die tbar hatte einen Abstandhalter zwischen den Elementen, auch wenn die unminified Symbolleiste korrekt wiedergegeben. Ich denke, Sencha hat eine eigene Funktion dafür, aber es fixiert es.