EXTJS - Как проверить, существует ли элемент? - PullRequest
10 голосов
/ 19 июля 2010

Мне нужно знать, существует ли boxComponent в ext formPanel, чтобы выполнить некоторые действия ... Есть ли способ узнать это? как то так:

if(getElementById("boxId") != 'undefined' ){
    alert('exists');
} 

Ответы [ 5 ]

16 голосов
/ 20 июля 2010

Общая схема, которую использует большинство людей, такова:

var myBoxCmp = Ext.getCmp('cmpId');
if(myBoxCmp){
    myBoxCmp.doSomething();
}

То же самое для элементов:

var el = Ext.get('elId');
if(el){
    el.doSomething();
}

Вы также можете использовать такие методы, как Container.findById, но если у вас есть идентификатор (если он уникален, как и должно быть), просто используйте getCmp.

РЕДАКТИРОВАТЬ: прошло несколько лет с тех пор, как этот оригинальный ответ, и в настоящее время getCmp обычно воспринимается как запах кода и его обычно следует избегать в приложениях (способствует глобальным ссылкам, которые обычно указывают на плохой дизайн когда они требуются). Обычно лучше использовать ссылки контроллера (если используется MVC) или различные методы ComponentQuery или Container для ссылки на связанные компоненты (например, down , child , getComponent и т. Д. .)

3 голосов
/ 06 октября 2011

Я просто делаю это методом extjs и предпочитаю не использовать getElementById (), который является родным методом js и может вызвать проблемы несовместимости в браузерах diffrenet:

0 голосов
/ 16 мая 2013
function openView(cid) {
    shortName = cid.substr(cid.lastIndexOf(".")+1, cid.length);
    if(Ext.get(shortName) == null) Ext.create(cid);
   Ext.Viewport.setActiveItem(Ext.getCmp(shortName));
}

Эта функция открывает вид как

openView('MyApp.view.Oeffnungszeiten');

и если представление существует, оно обращается к старому экземпляру

0 голосов
/ 27 июля 2011

Используйте метод Ext.isEmpty (object).

if(Ext.isEmpty(getElementById("boxId")) {
   alert('boxId is empty');
}
0 голосов
/ 19 июля 2010

Вы можете использовать Ext.get('boxId'). Он возвращает null, если объект не существует, и возвращает Ext.Element объект.

Использование getElementById, вероятно, будет намного быстрее, хотя. У вас есть какие-то особые возражения против этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...