2

以下のコードでは、activeTab を 0 に設定すると、/viewer/welcome の内容が期待どおりに表示されます。(以下のように) activeTab を 1 に設定すると、ロード時に 2 番目のタブがアクティブになりますが、最初のタブをクリックすると、コンテンツが表示されません。タブをクリックする前にタブのコンテンツをロードしているのがわかります(autoLoad: 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();
                }
            }
        },
                    ...
       }

タブがこのコンテンツをタブの一部として管理していない理由がわかりません.....

4

2 に答える 2

1

ここでの問題はあなたが指摘したことだと思います-タブはコンテンツを管理していません。彼らがそれを適切に管理していない理由は、ローダーから返される HTML コンテンツが、ExtJS コンポーネントではない HTML であるためです。ExtJS がロードしたコンテンツを「管理する必要がある」ことは議論の余地がありますが、ドキュメントでは逆に言及されています: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Component-cfg -htmlこれについてバグを報告する価値があるかもしれません。

また、ウェルカム パネルで適切なレイアウトが指定されていることに気付きました。そのパネルには他の項目が含まれていないため、おそらくその設定は必要ありません。ちなみに、ロードされた html フラグメントの処理方法が改善される場合もあれば、改善されない場合もあります。

幸運を。

于 2011-12-14T04:01:46.120 に答える
0

ExtJS 5.1 では、参照名を使用しても機能しないことがわかりました。itemId を入力する必要がありました

于 2016-08-10T12:30:49.283 に答える