Лучший способ получить доступ к смежным компонентам / полям

Я ищу способ доступа к компонентам / полям, которые находятся либо в том же массиве элементов, что и доступ к одному, или даже только в том же массиве родительских элементов (последний вариант только вариант).

В ExtJS3 это было легко, просто определивref в контейнере владельца, но я неЯ не нашел ничего подобного в ExtJS4.

Я знаю, что я могу использоватьExt.ComponentQuery() или ярлыки /up()down() или дажеExt.getCmp() но они все не то, что я ищу, потому что они просто выполняют кучу кода, покаref был такой легкий способ делать вещи. Да, я осознаю тот факт, что использование ComponentQuery намного более отказоустойчиво, чем использование жестко закодированных ссылок. Но я просто хочу знать, есть ли другие способы сделать это.

 TimWickstrom.com02 нояб. 2012 г., 17:24
Я постоянно использую ссылки в своих контроллерах:docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Controller-cfg-refs
 sra02 нояб. 2012 г., 19:48
Ну, я нене упомянул контроллер, потому что я нене использовать их. Я знаю, что они знают, что имеют систему ссылок, но это не то, о чем я говорю ... Так что это совсем не помогло

Ответы на вопрос(2)

Решение Вопроса

Вот несколько приемов, которые я использовал:

//lookup by name
formPanel.getForm().findField('state'); 

//lookup using nextSibling/prevSibling in a fieldset or fieldcontainer
myField.ownerCt.nextSibling('textfield[fieldLabel=Description]')

ВотfieldLabel свойство используется для сужения выбора поля, но вы можете использовать любое свойство вообще. Так что, если вы создаете поле со свойствомref затем вы можете использовать его, чтобы выбрать поле, аналогичное тому, как вы бы использовали его в.ComponentQuery

 Geronimo05 нояб. 2012 г., 19:57
+1 за примеры :)
 dbrin05 нояб. 2012 г., 19:44
спасибо, что приняли! Я'11 +1 геронимос ответят также за то, что были первыми.
 sra20 нояб. 2012 г., 07:59
Я нашел другой способ доступа к смежным компонентам, который именно то, что я искал. Поэтому я удалилправильный ответ' от тебя. Не стесняйтесь комментировать, почему мой новый подход может быть неправильным. Оказывается, что оба подхода почти одинаковы, я перепроверил ваш ответ. Но пока новый выглядит более стройным для меня.
 dbrin05 нояб. 2012 г., 20:08
Спасибо! Вы, ребята, видели проблемы с jsfiddle?meta.stackexchange.com/questions/153630/...

Кроме того, для вашего случая получения следующего элемента в контейнере, вы можете использоватьnextSibling или жеprevSibling, Все компоненты имеют эти методы. Было бы немного меньше ходить по структуре DOM. Они также допускают аргумент селектора.

Они описаны в документахВот.

 dbrin05 нояб. 2012 г., 19:45
+1 за то, что был первым
 sra05 нояб. 2012 г., 12:02
+1 и спасибо за ответ, и да, это, кажется, подходит для моих потребностей. И даже если ответы @dbrin содержат почти то же самое, я отмечу его ответ как правильный (он объяснил это вместе с примером), потому что я могу 'Не скажи, кто из вас ответил первым.

Ваш ответ на вопрос