2016-06-26 3 views
0

Если я объявляю пользовательский компонент, как правильно применить изменения к свойствам при создании расширения компонента? Например:Компоненты расширения ExtJS6

Ext.define('GridForm',{ 
    extend: 'Ext.window.Window', 
    initComponent: function(){ 
     Ext.apply(this,{ 
      title: 'This a test window!' 
      ,height: 400 
      ,width: 400  
     }); 
     this.callParent(); 
    }  
}); 
Ext.define('LedDataForm',{ 
    extend: 'GridForm', 
    initComponent: function(){ 
     Ext.apply(this,{ 
      title: 'OK, I want to change it to this.' 
     });   
     this.callParent(); 
    } 
}); 
Ext.application({ 
    name : 'MyApp', 
    launch : function() { 
     Ext.create('LedDataForm').show(); 
    } 
}); 

В этом примере, я просто хочу, чтобы изменить заголовок окна, когда я создаю «LedDataForm». Все комментарии оценены.

ответ

1

Не записывайте конфигурационные файлы, которые вы хотите переопределить в функции init, вместо этого укажите в качестве конфигурации по умолчанию.

Ext.define('GridForm',{ 
    extend: 'Ext.window.Window', 
    title: 'This a test window!',// Give this as configs rather than in init function 
    initComponent: function(){ 
     Ext.apply(this,{ 
      width:400, 
      height:400 
     }); 
     this.callParent(); 
    }  
}); 
Ext.define('LedDataForm',{ 
    extend: 'GridForm', 
    title: 'OK, I want to change it to this.', 
    initComponent: function(){ 
     Ext.apply(this,{ 
     });   
    this.callParent(); 
    } 
}); 
Ext.application({ 
    name : 'MyApp', 
    launch : function() { 
     Ext.create('LedDataForm',{ 
      title:'testing' 
     }).show(); 
    } 
}); 
0

Почему бы не сделать это:

Ext.define('GridForm',{ 
    extend: 'Ext.window.Window', 
    title: 'This a test window!', 
    height: 400, 
    width: 400   
}); 
Ext.define('LedDataForm',{ 
    extend: 'GridForm', 
    title: 'OK, I want to change it to this.' 
}); 
Ext.application({ 
    name : 'MyApp', 
    launch : function() { 
     Ext.create('LedDataForm').show(); 
    } 
}); 

Простая статическая конфигурация может быть применен к классу тела (второй аргумент, переданный Ext.define).

initComponent обычно необходим только в том случае, если вам нужно рассчитать значения или выполнить логику инициализации.

Кроме того, вы можете посмотреть здесь, поскольку он много объясняет: The Class System.

Смежные вопросы