2013-06-27 4 views
0

Поэтому я хочу добавить компонент в нижнюю часть панели. Как правило, вы бы просто сделать следующее:ExtJS - Добавить компонент внизу

Ext.getCmp('xxxx').add({....}); 

и что добавит к нижней части, но по какой-то причине, когда вы добавляете Itemid все это идет в ад. Вот рабочий пример: http://jsfiddle.net/Qsfgh/ Обратите внимание, как «более высокий» идентификатор приходит перед нижним. (Вы можете открыть консоль и посмотреть HTML-код, если хотите проверить). Даже когда я использую «вставку», и я вставляю его в самый конец, он все еще ставит его в начале. Как мне обойти это?

+0

В вашей скрипке я вижу сначала «Фамилия 1» и «Фамилия 2». То есть в том порядке, в котором вы их добавили. Как и ожидалось. Идентификаторы DOM действительно в обратном порядке, но ... Почему вас это волнует? – rixo

+0

Поскольку, когда вы нажимаете клавишу «tab», вы переходите от фамилии 2 к фамилии 1 (да, я могу изменить индекс вкладок, но у меня есть 20 входов, создаваемых за один раз ... похоже, что должен быть лучший способ) –

+0

Кроме того, «заказ», который я добавил, не имеет значения для отображения, поскольку оба они позиционируются абсолютно. Но они будут иметь значение для HTML, который является основной проблемой =) –

ответ

1

Оба поля, которые вы добавляете, имеют одинаковые itemId. ItemIds не должны быть глобально уникальными, но они должны быть уникальными для компонентов в одном контейнере. itemId используется как ключ для компонента в смешанной коллекции элементов контейнера владеющего (если на компоненте нет элемента item, вместо этого используется идентификатор).

Поэтому, когда вы добавляете второе поле, оно заменяет первое поле в коллекции предметов контейнера и закручивает процесс рендеринга. Дайте полям разные ItemIds, и все будет работать правильно.

Если вы дадите каждому полю уникальное поле itemId, вам больше не нужно будет абсолютно позиционировать поля. Поле 2 будет помещено правильно под полем 1