Ext.FormPanel.load() && ComboBox
Ext.FormPanel.load() чудесно работатет с textfield/datefield/radio/checkbox. А как загружать ComboBox'ы? For example: у меня 4 ComboBox'а (2-ва с mode: "local" + Store с autoLoad: true; 2-ва с mode "remote"). Я передаю с сервера ID'шки ComboBox'в. Ну и как мне теперь все это свести до кучи?
|
И в чём проблема?
|
Цитата:
1. Окончания загрузки Store #1 с autoLoad: true; 2. Окончания загрузки Store #1 с autoLoad: true; 3. Окончания загрузки Form'ы И только потом, когда эти три ансинхронные события выполнятся, установить для 2-х ComboBox'ов с mode: "local" значения, полученные с сервера. А как поступать с ComboBox'ами с mode: "remote" - даже пока не устаканилось. Давайте пойдем от простого к сложному: в начале сведем до купы три выше перечисленных асинхронных события. |
У меня такая же проблема.
Как Вы ее решили ? |
Напиши ему в личку или на мыло, он может на форуме последний раз тогда был.
|
дождаться загрузки нескольких Store. Это надо сделать или что?
Если это, то я бы сделал так: опишу алгоритм: обьявляем переменную i=0; После успешной загрузки Store выполняем функцию i++, проверяем значение переменной i - если оно равно количеству всех Store - значит они все загрузились. Все ок, мы дождались, делаем то что запланировали. |
Цитата:
|
Проблема была в том, что на форме есть combobox, значения которого грузятся с сервера. После загрузки необходимо, чтобы выбранное значение в списке было установлено в соответствии с данными, которые тоже выдаются сервером в форму. Так как сама форма грузится асинхронно и combobox тоже грузится асинхронно, то приходится синхронизировать эти две загрузки так, чтобы после загрузки формы дождаться загрузки списка уже потом выбрать в нем требуемое значение.
Пока сделал так, что жду загрузку формы, затем делаю load на combobox и затем выбираю в нем требуемый элемент. Но как-то мне это не очень нравится. Вот если бы был механизм в combobox, при котором в случае загрузки с сервера, сразу можно было указать какой элемент в списке должен быть установлен после загрузки. Это бы было более логично. Но ничего похожего не нашел. |
Два варианта:
1. делай загрузку комбобокса и в случае успешной загрузки делай загрузку формы: combo.store.load({params:{id: id}, url: '/asdfasdfsf/asdf/sfsaf/', success: function(){ form.getForm().load(); }}); 2. Делай загрузку сторе. В комбо сделай листенер onload: combo.store.on('load', function(){ form.getForm().load(); }); Я бы так пошел. |
вариант 3й - использовать расширение saki
http://examples.extjs.eu/popcombo.html |
Часовой пояс GMT +3, время: 23:38. |