最初にパネル A を表示し、その下にパネル B を表示します。パネル A は JSONP を使用してデータを取得し、ストア ロードのコールバック関数に表示されます。そのため、表示に約 1 秒かかります。
フローティング パネル C をパネル B に位置合わせしました。フローティング パネル C は次のようなものです。
Ext.define('MyApp.view.MyWindow', {
extend: 'Ext.window.Window',
height: 334,
width: 540,
layout: {
type: 'border'
},
title: 'Run report',
initComponent: function () {
var me = this;
floatingpanel = Ext.create('Ext.panel.Panel', {
html: "something",
width: 100,
height: 50,
floating: true,
listeners: {
'show': {
fn: function () {
floatingpanel.alignTo(PanelB, "tr-tr", [left, top]);
},
scope: floatingpanel,
//delay: 1000, // to wait for other component to show
single: true
}
}
});
Ext.applyIf(me, {
items: [{
xtype: 'form',
bodyPadding: 10,
region: 'center'
}]
});
me.callParent(arguments);
}
});
次にfloatingpanel.show()
、パネルを表示するために呼び出されます。ただし、パネル B には追加されません。
上記のように使用しdelay
ないと、フローティング パネルが表示されようとしているときにパネル A がまだ使用できないため、フローティング パネル C がパネル A のどこかに表示されます。だから私は「遅延」を入れました。
1 秒後、コールバックが成功したため、パネル A が表示されます。これで、フローティング パネル C が適切な場所でパネル B に位置合わせされます。
コールバック関数は 1 秒または 10 秒で成功する場合があるため、遅延時間を選択するのは困難です。
これを解決する他の方法はありますか?doConstrain を使用して、フローティング パネル C をパネル B: にアタッチしようとしましたfloatingpanel.doConstrain(PanelB)
。しかし、どういうわけかうまくいきませんでした。