Определите поля снаружи, а затем внесите их в элементы

Я использую extJs 6. У меня есть код, как показано ниже, это может быть текстовое поле или что-то еще. Я хочу сделать общее репо для всех полей, а затем включить в отчеты, используя xtype или что-то еще, потому что один и тот же код будет использоваться в нескольких отчетах.

  items: [
                {
                    xtype: 'combo',
                    fieldLabel: 'year',
                    name: 'Year',
                    displayField: 'Key',
                    valueField: 'Year',
                    value: new Date().getFullYear(),
                    store: {
                        type: 'years'
                    }
                },

Это должно выглядеть так

   items: [
                    {
                        xtype: 'yearfield'
                    },
          ]

or

  items: [
                            xtype: 'yearfield'
              ]

Как я должен определить эти поля и что они должны расширять.


person Hacker    schedule 15.06.2016    source источник


Ответы (1)


Поскольку ваше старое поле xtype:'combo', это Ext.form.field.ComboBox, поэтому вам придется расширить его.

Ext.define('MyApp.view.MyOwnYearField',{
    extend:'Ext.form.field.ComboBox',
    xtype:'yearfield', // <- the xtype of MyOwnYearField is defined here
    fieldLabel: 'year',
    name: 'Year',
    displayField: 'Key',
    valueField: 'Year',
    value: new Date().getFullYear(),
    store: {
        type: 'years'
    }
});

Прежде чем вы сможете использовать xtype:'yearfield', вы должны загрузить файл, в котором он находится, например. добавив полное имя в requires список:

Ext.define('MyApp.view.SomeReport',{
    requires:[
        'MyApp.view.MyOwnYearField' // The class is loaded here
    ],
    items:[{
        xtype:'yearfield' // The class is referenced by xtype. 
                          // This is only possible after it has been loaded!
    }]
person Alexander    schedule 15.06.2016
comment
Итак, в этом случае, если у меня есть 20 полей, то в требованиях мне нужно 20 записей? или это 1 запись в файле.. - person Hacker; 15.06.2016
comment
Если вам нужно, чтобы ваш код соответствовал стандарту, я боюсь, что вам потребуется 20 записей. Однако, если вам это не нужно, вы можете поместить все свои определения полей в один файл. В этом случае вам нужна только одна запись, ссылающаяся на этот файл. - person Alexander; 15.06.2016
comment
Если я создаю этот xtype, если я использую один и тот же xtype, это 2 или более отчетов, создает ли он новый объект или это синглтон. Я использую панель вкладок. - person Hacker; 15.06.2016