1

私が作成したパネルがあり、jsp ページをロードするためのローダー構成が含まれています。jsp には、ext コントローラーでリスナーをアタッチする必要があるマークアップが含まれています。私が抱えている問題は、パネルでアフターレンダーをリッスンすることですが、jsp ページの dom が常にレンダリング/ロードされているとは限らず、タイミングの問題です (アフターレンダーが dom を見つけられる場合もあれば、見つからない場合もあります)。この時点で)。ローダーにリスナーを配置して、ロードをリッスンしてみました。しかし、再び同じ問題が発生し、その時点で dom がレンダリングされる場合とレンダリングされない場合があります (これもタイミングの問題です)。

Ext.create('panel', {
  listeners : {
       afterrender: {
           fn : function(){
               Ext.dom.Query.select('#mydiv');//sometimes this finds it some times it doesn't
           }
       }
    }
  loader : {
   url : '/my/jsp',
   autoLoad : true,
   listeners : {
       load : {
           fn : function(){
               Ext.dom.Query.select('#mydiv');//sometimes this finds it some times it doesn't
           }
       }
    }
}
});

jsp が読み込まれ、dom がパネルにレンダリングされた後にリッスンするイベントはありますか? ローダーがjspのdomをパネルにロードする前にafterrenderが呼び出され、ローダーのロードイベントと同じだと思います。dom をクエリしてリスナーをアタッチする前に、jsp の dom がパネルにレンダリングされていることを確認する必要があります。

4

2 に答える 2

0

リスナーで遅延オプションを使用してみることができますhttp://docs.sencha.com/ext-js/4-1/#!/api/Ext.EventManager-method-addListener 完全な証明方法ではありませんが、うまくいく可能性がありますあなた。

于 2013-03-30T18:25:53.643 に答える
0

ローダーは load イベントを発生させるため、次を使用してリッスンできます。

component.getLoader().on('load', function() {
    // do something
});
于 2013-03-30T22:23:08.970 に答える