ExtJS4 – Estendendo diferentes componentes de uma única classe base
-
20-12-2019 - |
Pergunta
Eu tenho um aplicativo da web para o qual estou usando o ExtJS 4.2.Este aplicativo possui vários componentes diferentes - um painel que exibe alguns dados, outro painel que exibe alguns outros dados, uma grade, um gráfico, etc., etc.
É necessário que cada componente tenha no mínimo um conjunto específico de funções e propriedades.Então, eu gostaria de definir uma classe de 'componente' da qual eu possa estender todo o resto.Por exemplo:
Ext.define('MyApp.BaseComponent', {
extend: 'Ext.panel.Panel',
alias: 'widget.myapp-basecomponent',
prop1: true,
prop2: 17,
func1: function (a, b) {
return a + b;
}
});
Então, eu estenderia cada componente individual do meu aplicativo a partir dessa classe de componente base.O problema é que se eu definir o componente base como uma extensão de 'Ext.panel.Panel', só poderei estender outros painéis a partir dele.Não consigo estender uma grade, árvore, etc, etc.
Existe uma maneira de conseguir isso?Ou estou abordando isso da maneira errada?Talvez eu deva aninhar tudo que não é um painel (grade, gráfico, etc.) em um painel para que todos possam se estender do BaseComponent?Conselho muito apreciado.
Solução
Se você deseja apenas aumentar a classe do componente base, você pode simplesmente fornecer uma substituição que os adicione:
Ext.define('MyApp.AugmentComponent', {
override: 'Ext.Component',
a: 1,
b: 2,
fn1: function() {
}
});