Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблема с заполнением baseParams формы (https://javascript.ru/forum/extjs/47155-problema-s-zapolneniem-baseparams-formy.html)

WalterScott 11.05.2014 14:46

Проблема с заполнением baseParams формы
 
Пробую делать это так:
var win = Ext.create('Ext.window.Window', {
    title: 'Новый альбом',
    width: 400,
    height: 200,
	closeAction : 'hide',
	layout: 'fit',
	modal: true,
	items: [{
		xtype: 'form',
		id: 'newAlbumForm',
		method: 'POST',
		border: '0px',
		bodyStyle: {padding: '5px'},
		items: [{
			xtype: 'textfield',
			fieldLabel: 'Название',
			id: 'name'
		},
		{
			xtype: 'fieldset',
			layout: 'fit',
			style: {padding: '4px'},
			title: 'Описание',
			items: [{
				xtype: 'textarea',
				id: 'description'
			}]	 
		}],
		baseParams: {
			name: Ext.getCmp('name').value, 
			description: Ext.getCmp('description').value,
		}
	}],
	buttons: [{
		text:'Сохранить',
		handler: function() {
			Ext.getCmp('newAlbumForm').submit({
                url: '/album/src/newalbum.php',
                success: function(form, action){
                            Ext.MessageBox.alert('', action.result.message);
                },
                failure: function(form, action){
                            Ext.MessageBox.alert('', action.result.message);
				}
            });
		}
	},{
		text: 'Отменить',
		id: 'cancel'	
	}]
});


Получаю TypeError: Ext.getCmp(...) is undefined
Если использовать вместо Ext.getCmp Ext.get('name'), то возвращается null.

Внутри handler-а кнопки Ext.getCmp('name').value работает. Попробовал получить оттуда baseParams через this.up('form').baseParams: this.up(...) is undefined

siber-biber 12.05.2014 06:59

И зачем вам baseParams если вы отправляете данные только из видимых полей?
И id я бы тут для полей не использовал. У полей есть имена по которым к ним можно обратиться (или inputId можно использовать), а id предполагает уникальность в рамках проекта (с большой долей вероятности у вас еще гдето может быть другая сущность/атрибут name).

Вот этот кусок неверный так как в момент его выполнения нет еще ни экземпляра поля name ..ни description:
baseParams: {
	            name: Ext.getCmp('name').value,
	            description: Ext.getCmp('description').value,
	        }
Ну и как я уже написал baseParams тут не нужен:
var win = Ext.create('Ext.window.Window', {
    title: 'Новый альбом',
    width: 400,
    height: 200,
	closeAction : 'hide',
	layout: 'fit',
	modal: true,
	items: [{
		xtype: 'form',
		id: 'newAlbumForm',
		method: 'POST',
		border: '0px',
		bodyStyle: {padding: '5px'},
		items: [{
			xtype: 'textfield',
			fieldLabel: 'Название',
			name: 'name'
		},
		{
			xtype: 'fieldset',
			layout: 'fit',
			style: {padding: '4px'},
			title: 'Описание',
			items: [{
				xtype: 'textarea',
				name: 'description'
			}]	 
		}]
	}],
	buttons: [{
		text:'Сохранить',
		handler: function() {
			Ext.getCmp('newAlbumForm').submit({
                url: '/album/src/newalbum.php',
                success: function(form, action){
                            Ext.MessageBox.alert('', action.result.message);
                },
                failure: function(form, action){
                            Ext.MessageBox.alert('', action.result.message);
				}
            });
		}
	},{
		text: 'Отменить',
		id: 'cancel'	
	}]
});

WalterScott 12.05.2014 22:45

Спасибо!


Часовой пояс GMT +3, время: 23:11.