ExtJs 4, есть ли способ найти контроль?(не по идентификатору) - PullRequest
4 голосов
/ 26 апреля 2011

У меня есть кнопка с id = 'someid', я могу найти ее по Ext.getCmp('someid') ...

Есть ли способ установить для этой кнопки какой-то дополнительный "extraId" и найти эту кнопку с помощью "extraId"?

Ответы [ 4 ]

15 голосов
/ 17 августа 2011

Вопрос в том, где вы хотите искать, чтобы получить свой предмет.

Другим способом может быть itemId .

ItemId может использоваться какальтернативный способ получить ссылку на компонент, когда ссылка на объект недоступна.Вместо использования идентификатора с Ext.getCmp, используйте itemId с Ext.container.Container.getComponent, который будет извлекать itemId или id.Так как itemId являются индексом внутренней MixedCollection контейнера, itemId локально ограничивается контейнером, что позволяет избежать потенциальных конфликтов с Ext.ComponentManager, для которого требуется уникальный идентификатор.

Источник и дополнительная документация: http://docs.sencha.com/ext-js/4-0/#/api/Ext.AbstractComponent-cfg-itemId

ComponentQuery (упомянутый wombleton) также является хорошим способом, но, возможно, не таким производительным, как itemId .

8 голосов
/ 26 апреля 2011

Вы можете найти его, выполнив Ext.ComponentQuery.

Пример, который будет работать в консоли на связанной странице:

Ext.ComponentQuery.query('button[text=OK]')

Вы можете заменить text=OK на искомый атрибут.

2 голосов
/ 26 апреля 2011

У меня нет доступа к документации API ExtJS 4, но я знаю, что в 3.X и предыдущих версиях есть некоторые другие способы получения ссылок на ваши компоненты без использования идентификатора DOM.

Если ваши компоненты являются частью формы или панели форм, у вас должен быть доступ к методу findField (). Он унаследован от базовой формы. Этот метод может использовать идентификатор, dataIndex, name или hiddenName, чтобы получить ссылку на ваш компонент.

Существует также вспомогательный метод findByType (xtype), который вы можете использовать для поиска кнопок. Другой вариант - расширить кнопку, которую вы используете, чтобы разместить уникальное свойство, которое вы можете использовать в качестве ссылки.

0 голосов
/ 16 сентября 2013

Альтернативой id является itemId, и он ограничен областью действия контейнера, в котором он определен. Таким образом, в этом случае нет необходимости определять глобально уникальный itemId, как это делается в случае id. Мы можем использовать запрос компонента, чтобы получить объект компонента, имеющий itemId. Пожалуйста, перейдите по этой ссылке, где я опубликовал о том, как использовать itemId и каковы его преимущества. http://jksnu.blogspot.in/2012/11/use-itemid-instead-of-id.html

...