在下面的代码中,如果我将activeTab设置为0,则/viewer/welcome的内容将按预期显示。如果我将activeTab设置为1(如下所示),则第二个选项卡在加载时被激活,但是当我单击第一个选项卡时,内容永远不会显示。在我点击标签之前,我可以看到它加载标签的内容(如果我设置autolload: false,它根本不加载它),但是即使它加载了,它也不显示。
{
xtype: 'tabpanel',
activeTab: 1,
items: [
{
xtype: 'panel',
loader: {
url: '/viewer/welcome/',
renderer: 'html',
autoLoad: true
},
layout: {
type: 'fit'
},
title: 'Welcome'
},
...
}
为什么当选项卡被激活时,选项卡的内容实际上没有呈现?为什么它的工作,如果选项卡是在负载上的活动选项卡,但不是当它被激活,否则?
如果我做了这些更改,文本一直按预期显示,但我从虚假的激活调用中获得额外的页面加载。
{
xtype: 'tabpanel',
activeTab: 1,
items: [
{
xtype: 'panel',
loader: {
url: '/viewer/welcome/',
renderer: 'html',
autoLoad: false
},
layout: {
type: 'fit'
},
title: 'Welcome',
listeners: {
activate: function(me, opts) {
me.getLoader().load();
}
}
},
...
}
我只是不明白为什么标签不管理这个内容作为标签的一部分.....
我认为这里的问题是你所指出的-选项卡不管理内容。他们没有正确管理它的原因是从加载器返回的HTML内容只是-一些HTML,它不是ExtJS组件。ExtJS"应该"管理它已加载的内容是有争议的,但文档暗示相反:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Component-cfg-html这可能值得在此提交一个错误。
另外,我注意到你在欢迎面板上指定了一个合适的布局。由于该面板中没有包含其他项,因此可能不需要该设置—顺便说一句,它可能(也可能不)改善加载的html片段的处理方式。
好运。
我发现在ExtJS 5.1中使用引用名称不起作用。必须输入itemId