由于某种原因,Ext.Panel.getTopToolbar()返回一个对象数组(工具栏的元素,但 NOT 工具栏本身),而不是Ext.Toolbar。因此,我无法隐藏已设置的工具栏。我该怎么办?
示例代码:
function (panel)
{
alert(panel.getTopToolbar()); // displays the list of elements in the toolbar
panel.getTopToolbar().hide(); // error: "hide" is not a function
}
答案 0 :(得分:0)
它应该可以工作,所以听起来好像你使用topToolbar
作为配置而不是使用tbar
作为配置?如果您设置tbar
配置,则会将其实例化并保存为topToolbar
,这是Ext.Toolbar
公开的getTopToolbar()
实例。如果你直接覆盖topToolbar,你可能会看到这个问题。
您可能会在Panel.onRender
中找到这段代码(您必须直接包含该文件)并在Firebug中设置断点以查看正在发生的事情:
if(this.tbar && this.topToolbar){
if(this.topToolbar instanceof Array){
this.topToolbar = new Ext.Toolbar(this.topToolbar);
}
this.topToolbar.render(this.tbar);
}
答案 1 :(得分:0)
panel.getTopToolbar().setVisible(false);
答案 2 :(得分:0)
4.2.1
对我有用的是:
var topToolbar = Ext.create('Ext.toolbar.Toolbar', {
dock: 'top',
width: 'auto',
id: 'mytoolbar',
hidden: true,
items: [...]
});
var p = Ext.create('App.view.MyCustomPanel', {
html: 'test',
});
if (userCanSeeToolbar) {
p.addDocked(topToolbar);
}
然后动态地我可以显示/隐藏顶部工具栏:
/* if (userCanSeeToolbar) { */
p.getDockedComponent('mytoolbar').show();
p.getDockedComponent('mytoolbar').hide();