Объекты в ExtJS. Оператор Ext.create или new?

Я новичок в ExtJS. Я начал программировать небольшую форму. И я совершенно запутался в использовании Ext.create и оператора new.

Вот код:

Я хотел запрограммировать форму. Я нашел небольшой пример на одной из страниц sencha. Он создает форму вот так:

var descAndSystem = new Ext.form.Panel ({
    region: 'center',
    layout: 'vbox',
    margins: '5 5 5 5',
    xtype: 'form',
    title: 'Some title',
    id: 'descAndSystem',
    width: '800', 
    items: [
       { xtype: 'textarea',
     fieldLabel: 'Provide a description',
     name: 'rightdescription',
       },
       {
      xtype: 'combobox',
      fieldLabel: 'Choose System',
      store: systems,
      queryMode: 'local',
      displayField: 'name',
      valueField: 'name',
      name: 'system'
       }
    ]
});

затем я использовал descAndSystem как компонент во вьюпорте:

Ext.create('Ext.container.Viewport', {
    layout: 'border',
    id: 'wizardcontainer',
    items: [
        descAndSystem,
        {
            region: 'south', 
            layout: 'hbox',
            margins: '5 5 5 5',
            items: [
               { xtype: 'button', text: '<< Back', handler: onNext },
               { xtype: 'button', text: 'Next >>', handler: onNext },
               { xtype: 'button', text: 'Cancel', align: 'right', handler: function () { alert ('Abgebrochen geklickt.'); } }
            ]
        }
   ]
});

После множества проб и ошибок я обнаружил, что могу получить доступ к значениям моей формы следующим кодом:

Ext.getCmp ('descAndSystem').getForm ().findField ('rightdescription').getValue ()

в отличие от того, что говорилось в одной из книг, которые я купил, следующий код НЕ работает:

Ext.getCmp ('rightdescription').getValue ()

Но моя настоящая проблема в том, что я ожидал, что

Ext.create ('Ext.form.Panel', { .... });

это то же самое, что

new Ext.form.Panel ( {...});

Но когда я делаю последнее, интерпретатор Chrome говорит:

Uncaught TypeError: Cannot read property 'Panel' of undefined'

Опять же, после долгих проб и ошибок, сработало следующее:

new Ext.Panel ( {...});

Мало того, что я не смог найти ни одной ссылки на объект с таким именем в документации, так еще и строка

Ext.getCmp ('descAndSystem').getForm ().findField ('rightdescription').getValue ()

теперь выдает ошибку:

Uncaught TypeError: Object [object Object] has no method 'getForm'

Кроме того, я пытался заменить descAndSystem на другую форму путем манипуляции DOM, в документации есть различные методы замены. Ни один из них не сработал, я всегда получал сообщение об ошибке "не имеет метода 'replace'". У меня есть сильное подозрение, что я что-то неправильно сделал. Есть какие-нибудь подсказки? Я использую ExtJS 4 и Chromium 17.0.963.56 на Ubuntu 10.10 64-bit.

9
задан kaidentity 28 February 2012 в 12:23
поделиться