私は怖いが、ExtJSには、すべてのイベントのプロファイリングを提供していません。カスタムイベントシステムを使用します。ここで
は、私は、この問題の解決策を参照してください方法です。
フレームワークで使用されるイベントのディスパッチと処理に機能を提供するExt.util.Eventクラスと、すべてのフレームワークイベントをディスパッチする単一ポイントを提供するExt.app.EventBusクラスがあります(fireEventはExt.app.EventBus.dispatchメソッドの単なるラッパーです)。
クラスはプライベートですので、私は、そのソースコードを参照することをお勧めします。
あなたは(EventProfilerがあなたのことになっていることがExt.app.EventBus.dispatchメソッドを呼び出して、そのようなExt.util.Event.fire方法のなめらか内イベントリスナーを呼び出してから取るどのくらい見るためにこれらのクラスをオーバーライドすることができます独自のクラス)
Ext.app.EventBus
dispatch: function (/* event name or Ext.util.Event */event, /* Target class */ target, args) {
//start timing
var start = new Date();
/* ... */
for (i = 0, ln = events.length; i < ln; i++) {
event = events[i];
// Fire the event!
if (event.fire.apply(event, Array.prototype.slice.call(args, 1)) === false) {
return false;
}
// start event profiling
// here we are sure that event is dispatched and it's instance of Ext.util.Event
EventProfiler.startProfile(event, /* time passed from dispath method started */new Date() - start);
}
/* rest of dispatch method call */
}
Ext.util.Event
fire: function() {
/* ... */
if (listener.o) {
args.push(listener.o);
}
EventProfiler.endProfile(this);
if (listener && listener.fireFn.apply(listener.scope || me.observable, args) === false) {
return (me.firing = false);
}
/* ... */
}
Btw、コントローラを正しくクリーンアップしますか?コントローラーを破壊すると、EventBusのリスナーはフレームワークによってクリーンアップされません。申し訳ありませんが、あなたの質問に対する回答ではなく、関連しています。 – mistaecko
@mistaeckoその追加情報ありがとう!これは本当に知って良いです!しかし、現在のところ、コントローラが初期化されたらコントローラをリサイクルしないので、これは効果がないはずです。私の外見から知っている限り、ソースコードはコントローラがApplicationControllerの内部コレクションに格納されます。しかし、私はあなたがあなたのコントローラをクリーンアップすることを決定した場合、それがここでコントローラを破壊する方法についての私の答えをチェックし、イベントdispatchings – sra
の簡単なプロファイリングで行われていないと思います。http://stackoverflow.com/questions/12330846/how- to-delete-controller-extjs/12344788#12344788 – mistaecko