2013-02-27 2 views
1

В Extjs 3.4 У меня довольно большая форма, заполняемая с помощью вызова ajax через someForm.getForm().load({url: someplace, etc}), который работает безупречно. Проблема, которую я не могу обойти, заключается в том, что есть несколько списков со списком и флажками, которые определяют, видимо ли другое поле, и allowBlank.ExtJs определяют видимость при загрузке формы

В соответствии с ответом по аналогичному вопросу я попытался использовать событие actioncomplete в форме, но поля не имеют значений в этой точке. Я также попытался использовать событие success вызова load(), но получить ту же проблему.

Есть ли другие способы получить эту функциональность от звонка form.load()?

Edit - вот мой load вызов:

var panel = Ext.getCmp('someFormID'); 
panel.getForm().load({ 
    method: 'GET', 
    url: 'ajax_get_request.aspx?id=' + id, 
    success: function (form) { 
     // This will error: object is null or undefined 
     alert(form.findField('fieldID').getValue()); 
    } 
}); 

Я относительно новым для ExtJS так, может быть, я просто отсутствует что-то здесь ...

+0

С каким объектом он жалуется? 'form' или return from' findField ('fieldID') '? – Mchl

+0

Мне кажется, что '' fieldID '' вы используете, возможно, неверно, поэтому поле не найдено. – Mchl

ответ

1

Не уверен, почему закреплять в success обратного вызова Ext.form.BasicForm.load() не подходит для вас, но я могу предложить альтернативный подход.

Я обычно использую явный вызов Ext.Ajax.request() для загрузки данных в Ext.data.Record. Затем в request()success Обратный вызов Я загружаю данные в форму с использованием Ext.form.BasicForm.loadRecord(). Если вам нужно воздействовать на загруженные значения, вы можете сделать это в том же обратном вызове.

Я делаю это так, потому что мне нравится иметь исходные значения с сервера, хранящегося где-то в стороне.

+0

Я понял, что обратный вызов успеха будет местом для этого, но, возможно, мой код (см. Редактирование) настроен неправильно? Я раньше не использовал 'Ext.data.Record', поэтому я рассмотрю это. – blankensa

+0

Ну, я не уверен, почему, но переключение на использование имени поля вместо ID похоже работает правильно. Я действительно не знаю, почему, если форма не нравится иметь переменную, добавляющую к ID, когда она сделана ('id: 'somestring' + idVar,') – blankensa

+0

Правильно. Ни форма, ни какой-либо другой компонент ExtJS не нравится. Идентификатор используется в нескольких местах при создании компонента, а изменение его впоследствии не будет распространять это изменение. Лучше оставить 'id' один, когда компонент работает и работает. – Mchl

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