Я новичок в 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.