Просто для полноты картины (и потому, что выражения-члены могут привести к сбою запроса)
Как указано в @existdissolve, вы можете архивировать что-то похожее (не то же самое!) с подстановочным знаком с помощью Выражение члена как в вашем случае
Ext.ComponentQuery.query('button > menu > menuitem{text.search("Welcome")!=-1}');
При этом будет предпринята попытка выполнить нативную операцию поиска JS по текстовому свойству любого найденного элемента меню. Независимо от того, существует ли это свойство (или метод), это подводит меня к основной проблеме выражений-членов
Что нужно знать о выражениях участников
Вы можете использовать выражения-члены почти для каждого селектора, но они должны существовать в этом селекторе, иначе вы получите исключение, которое прерывает запрос (полностью, как исключение ).
Вот простой пример. Допустим, вы хотите найти кнопку по ее тексту. Это не должно быть проблемой, все кнопки нуждаются в тексте, не так ли? Это работает довольно долго, пока ваш клиент не пожалуется, что некоторым кнопкам не нужен текст, достаточно простого изображения. Вы забыли о запросе и добавили кнопку, и вдруг части вашего приложения перестают работать, в то время как вы получаете исключение, например
Uncaught TypeError: невозможно вызвать метод 'search' для неопределенного
Вы можете сами попробовать это на примере JSFiddle. Попробуйте «найти меня», а затем нажмите кнопку «Добавить изображение» и повторите попытку.
Почему это происходит? Ext.ComponentQuery
не проверяет ни существование свойства, ни существование выражения, что может быстро привести к полной ошибке запроса.
Да, приведенный выше пример прост, и вы можете очень быстро найти источник ошибки, но он также может быть совершенно другим.
Что теперь? Я не хочу сказать, что вы не должны использовать Выражение-член, но вам действительно нужно позаботиться о побочных эффектах, с которыми вы можете столкнуться.
person
sra
schedule
25.01.2013