Capture facilmente todos os eventos em um componente em ExtJS

Ao depurar um aplicativo ExtJS, você geralmente achará útil ouvir todos os eventos disparados por um componente específico. Na verdade, existe um método estático interno útil para fazer isso, chamado Ext.util.Observable.capture () .

Aqui está um snippet útil que simplesmente registra o nome do evento e todos os argumentos:

Ext.util.Observable.capture(myObj, function(evname) {console.log(evname, arguments);})

Melhor ainda, se você estiver inspecionando o elemento principal do seu componente nas ferramentas de desenvolvedor do navegador, poderá fazer o seguinte:

Ext.util.Observable.capture(Ext.getCmp($0.id), function(evname) {console.log(evname, arguments);})

Onde $0está o elemento atualmente selecionado. Deve funcionar bem no Chrome, Firefox, Opera, Safari.

Se você não quiser que esses registros poluam mais seu console, basta chamar releaseCapture em seu objeto:

Ext.util.Observable.releaseCapture(myObj);

Isso remove todas as capturas em um determinado objeto para que você não precise fazer referência ao seu ouvinte explicitamente (o que provavelmente era uma função anônima :)).

Dica bônus : também certifique-se de verificar o método observe , que faz algo semelhante, mas permite que você ouça todos os eventos disparados por todas as instâncias de uma determinada classe.