У меня есть набор контроллеров/представлений, которые составлены динамически, каждый из которых имеет список «селектор» и «контейнер», у такого контейнера может быть другая пара селекторов + контейнер и т. Д. Которые являются экземплярами одного и того же корневого селектора + контейнерного контроллера.Компонент ComponentQuery только для дочерних элементов
Это определение заголовок контроллера (абстрактный класс):
Ext.define('MyApp.controller.explorer.Base', {
extend: 'Ext.app.Controller',
refs: [
{ref: 'explorerContainer', selector: '[itemId="explorerContainer]'},
{ref: 'explorerSelector', selector: '[itemId="explorerSelector]'}
],
Дело в том, я не знаю, что должно быть селектор ComponentQuery, чтобы соответствовать только дочерние элементы моего контроллера с такими Itemid. Потому что, используя [itemId = "explorerContainer"], чтобы соответствовать компоненту, он делает это глобально, отвечая на самый верхний контейнер в дереве композиции.
В предыдущих экспериментах я сделал с ExtJS 3 я получил доступ к дочерним элементам с помощью myComponent.getComponent ('...'), но теперь нет getComponent(), и я не мог найти эквивалент в ExtJS 4.
Заранее спасибо.
Да, я смешанные контроллеры и представления, у меня есть MVC (MVP на самом деле) прошлое, и там контроллеры и представления всегда собрались вместе. Я понимаю оператор «>» в синтаксисе селектора ComponentQuery, но это не работает, потому что оно глобально, и я не знаю заранее, насколько глубоки дети (подумайте о динамически создаваемом графическом интерфейсе). В моей композиции для представления я могу иметь Селекторы (S) и Контейнеры (C), составленные следующим образом: ViewPort (S, C (S, C (S, C (S, C (...))))) , – emaringolo
Если вы не знаете глубину, вы просто используете «viewport mycontainer [property = value]» – dbrin
Но что, если я не знаю, какое свойство отличается? Я не хочу отмечать каждый экземпляр, эта пара селекторов + контейнеров должна знать только о себе и быть в состоянии быть встроенной (дочерней) из всего остального и настолько глубокой, насколько это необходимо. Это обычный шаблон MVC/MVP, с которым я работал с Smalltalk с самого начала, просто я не знаю, как сделать то же самое в ExtJS4, но мой ответ ниже был тем, что я искал. – emaringolo