これまでのところ、私の質問はすべてここで尋ねられ、回答されています。これまでにここにたどり着いたすべてのタイムマシンのヘルプに感謝します。:)しかし、すべては1日で終わるので、ここに私の最初の質問があります:
エラー処理の目的で、追加されたすべての興味深いコンポーネントにいくつかの汎用リスナーをアタッチしようとしています。これは で行うことができますExt.ComponentMgr.all.on('add', function (cnt, cmp) {})
。次に、すべてのボタンにクリック リスナーを追加するなど、コンポーネントの種類を調べます。
私が今しなければならないことは、タブパネルに追加されたすべてのパネルにアクティブ化リスナーを追加することです。私の問題は、コンポーネントがタブパネルの直接の子孫であるかどうかを判断する方法と、それを正しい方法で行う方法がわからないことです。
私はすでにこれを試しました:
Ext.ComponentMgr.all.on('add', function (cnt, cmp) {
if (cmp.ownerCt != undefined && cmp.ownerCt.getXType () == 'tabpanel') {
console.log (cmp.getXType () + ' in tabpanel with id "' + cmp.getId ());
}
});
悪い点は、一部の Ext doc に「ownerCt に依存しないでください」と書かれていることです。これは正しいです。他のすべてのコンポーネントには ownerCt がありますが、tabpanels に遅れて追加された場合はパネルではありません。
Ext.Panel.findParentByType() があることは知っていますが、これは上の任意のレベルでコンテナーを検索し、正しい方法ではないと思います (-> パフォーマンス)。
ご回答ありがとうございます。