2014-02-12 2 views
7

Я разработал custom kind of combo box, который использует сетку вместо стандартного комбо-сборщика (в основном для получения буферизованной визуализации с огромными наборами данных). Я сейчас пытаюсь сделать его совместимым с Ext 4.2.1, но я столкнулся с этой ошибкой:Отладчик ExtJS «[E] Запуск макета не выполнен» (в пользовательском компоненте)

[E] Layout run failed 

Пожалуйста, смотрите demo pages для тестов. Ошибка возникает один раз для каждого комбо, но только в первый раз, когда он расширяется.

Эта ошибка не произошла с 4.2.0 (см. demo page with 4.2.0). Изменения, которые я определил в 4.2.1 в то время, касались фильтра запросов, а не рендеринга или макета ... Тем не менее, я уже сталкивался с этой ошибкой с 4.2.0 в ситуации, когда сборщик сетки сидел в окно, но оно было в базе кода с большим количеством переопределений и использовало изолированную версию Ext4 ... Так что я просто прыгнул, что он не пришел из моего компонента и отключил его (another demo page доказывает, что сетка + окно недостаточно для того, чтобы вызвать ошибку).

Ошибка, похоже, не имеет побочных эффектов, но это заставляет меня чувствовать себя плохо.

Кто-нибудь знает, что является причиной этого или, что еще лучше, что нужно сделать, чтобы предотвратить его?

Или кто-то хорошо понимает механизм компоновки Ext, чтобы дать мне несколько советов о том, как отслеживать такую ​​ошибку? Или, по крайней мере, дать мне уверенность в том, что ошибка останется безвредной в любой ситуации?

ответ

23

На самом деле это был макет панели «Сетка», поскольку он был настроен на сжатие содержимого, но не было содержимого во время выполнения макета. Самый простой способ исправить это - установить ширину на панели (которая является вашим подборщиком), поэтому она больше не будет пытаться сжимать.

Смотрите мой нагрузочный запрос: https://github.com/rixo/GridPicker/pull/3

Я хотел бы также предложить расширение поля Picker вместо Combobox, Комбо делает много вещей, которые вы, вероятно, не нужно. Посмотрите, как я справился с этим в своем MultiSelect ux: https://github.com/nohuhu/Ext.ux.form.field.MultiSelect

+0

Спасибо большое! Могу ли я спросить, как вы так быстро достигли такого заключения? Нужно было отлаживать мой код или просто это произошло, потому что это частая причина этой ошибки? Кроме того, может быть, у вас есть идея, почему этого не происходит с 4.2.0? Что касается поля Picker, я действительно рассматривал возможность его построения, но я хотел, чтобы компонент был заменой для комбо как можно больше ... И я предпочел избежать повторной реализации логики для запросов и всех комбо-параметров (например, typeAhead, forceSelection и т. д.). Я также тайно прыгал, чтобы получить будущие варианты комбо бесплатно! – rixo

+2

Я использовал пример анализатора страниц, чтобы найти, что макет фактически не прошел, и пошел оттуда. Я устранил ряд проблем с макетами, что определенно помогает. :) Честно говоря, я не помню, что у нас было в 4.2.0; это был ужасно неудачный выпуск, и многие вещи привыкли работать случайно. К 4.2.1 кодовая база стабилизировалась, но я действительно рекомендую обновить до 4.2.2, так как было значительное количество исправлений, которые не сделали резкой в ​​4.2.1. –

+0

Еще раз спасибо, я не знал инструмент анализатора страниц. Я очень рад, что не смог разобраться в этом сам! – rixo

0

Или есть два одинаковых идентификатора, доступных в html. Идентификатор, который вы собираетесь сделать своим компонентом уже там.

У меня была аналогичная проблема, и когда я удалил одну из них, появится «карточка».

Надеюсь, что кому-то это поможет.

0

Я получил это сообщение, когда я пытался добавить Ext.tree.Panel на панель с рамкой. Я добавил его как запад, а затем еще одну панель на востоке. Extjs испугался, что я добавляю дерево в западную или восточную позицию и выбросил эту ошибку.

Я добавил панель дерева в центр, и эта проблема исчезла.

1

Я получил эту ошибку, когда (по ошибке) я изменил макет панели из:

layout : fit 

в

layout : { 
    type: 'vbox', 
    align: 'stretch' 
} 

В некоторых случаях панель была добавлена ​​только один элемент и в них случаев возникла ошибка.

Надеюсь, что эта информация будет полезна для кого-то.

1

В большинстве случаев макет терпит неудачу из-за неправильной конфигурации ширины/высоты в сочетании с вариантами макета.

После форума пост полезен для решения раскладку не удалось ошибки, особенно во вложенных контейнеров: https://www.sencha.com/forum/showthread.php?257244-vbox-layout-for-a-nested-tabpanel-fails-to-render-grid

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