2016-10-05 3 views
0

Я все время сталкиваюсь с этой проблемой. У меня есть пользовательский компонент с «элементами». Я хочу, чтобы кто-то использовал мой компонент, но определял некоторые значения конфигурации (т. Е. Я хочу конструктор для моего виджета!).Создание объектов в initComponent для использования в элементах

Допустим, у меня есть такой компонент. Я хочу, чтобы аргумент передавался через «someArgumentPassedInAsConfig», и я хочу, чтобы этот набор был задан в объекте items в дереве элементов.

Ext.define('MySuperDupeyComponent', { 
    extend: 'Ext.panel.Panel', 

    alias: 'widget.MySuperDupeyComponent', 

    initComponent: function() { 
     alert('ch --> ' + this.someArgumentPassedInAsConfig); 
    }, 

    items: [{ 
     xtype: 'someWidget', 
     somePropertyIwantToSet: this.someArgumentPassedInAsConfig 
    }] 
}) 

Каков наилучший способ для этого? Я хочу, чтобы кто-то мог использовать мой компонент таким образом.

items: [ 
    { 
     xtype: 'MySuperDupeyComponent', 
     someArgumentPassedInAsConfig: 'Blah blah blah' 
    } 

Это единственный способ использования Ext.apply в конструкторе?

+0

у меня было странное чувство, что я задал этот вопрос лет назад. Похоже, я это сделал. http://stackoverflow.com/questions/37945173/declaring-default-values-in-config/37946226#37946226 –

ответ

3

Объявление элементов внутри метода initComponent должно работать, если это то, что вы ищете.

Ext.define('MySuperDupeyComponent', { 
    extend: 'Ext.panel.Panel', 

    alias: 'widget.MySuperDupeyComponent', 

    initComponent: function() { 
     alert('ch --> ' + this.someArgumentPassedInAsConfig); 
     this.items = [{ 
      xtype: 'someWidget', 
      somePropertyIwantToSet: this.someArgumentPassedInAsConfig 
     }] 
     this.callParents(arguments); 
    } 
}) 

Если позволяют использовать его как этот

Ext.create('Ext.panel.Panel', { 
    items: [{ 
     xtype: 'MySuperDupeyComponent', 
     someArgumentPassedInAsConfig: 'Blah...' 
    }] 
}); 

https://fiddle.sencha.com/fiddle/1i07

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