Как получить доступ к дочернему компоненту типа enyo?

У меня есть тип под названием RobustList, который расширяет Control и имеет следующие компоненты:

components: [
    {name: "outerScroll",kind: "Scroller",touch: true,classes: "enyo-fit",components: [
            {name: "list",kind: "Repeater",onSetupItem: "setupItem",components: [
                    {name: "item",components: [
                            {name: "index",style: "display:none;"}
                    ]}, 
                    {name: "empty",fit: true,content: ""}, 
                    {name: "loadmore",fit: true,content: "Load More Items"}
                ]}
        ]}

]

Теперь я перехватываю событие onSetupItem и в этой функции пытаюсь получить доступ к дочернему компоненту. У меня есть проблема. Я предполагал, что фраза this.$ дает мне доступ ко всем дочерним компонентам. В настоящее время он дает мне доступ только к outerscroll и list. Это почему?

Изменить


Итак, очевидно, что при использовании типа List я могу получить доступ ко всем дочерним компонентам (в частности, в функции create enyo, которую я переопределяю). Я очень смущен тем, когда уместно делать определенные вещи. Как я и предполагал, this.$ можно использовать везде. Это определенно не так.


person Andy    schedule 05.09.2013    source источник


Ответы (1)


Отвечая на ваш вопрос, да, вы можете получить доступ к любому из дочерних элементов RobustList в onSetupItem, используя this.$., если это список. Ознакомьтесь с документацией здесь: https://github.com/enyojs/enyo/wiki/Lists . Из-за шаблона легковеса в списке есть только один активный набор элементов управления, поэтому вы можете обращаться к ним напрямую по имени.

Вы не хотели бы использовать this.$. для доступа к элементам в повторителе, потому что существует много копий компонентов (по одной для каждой строки). Используйте переданную ссылку (например, var item = inEvent.item;) для доступа к элементам в шаблоне строки.

Я также заметил, что вы используете «fit: true» для пары компонентов в списке. У вас может быть только один компонент fit: true в FittableColumn/FittableRow. Ни один из них на самом деле не подходит для установки, поэтому он, вероятно, не будет делать то, что вы хотите.

person Pre101    schedule 05.09.2013
comment
FWIW, List и Repeater могут сбивать с толку. Модель наилегчайшего веса действительно усложняет некоторые вещи. - person Pre101; 06.09.2013
comment
Большое спасибо за объяснение!. Это очень помогает. А я посмотрю на соответствие. - person Andy; 06.09.2013
comment
О, но у меня есть еще один вопрос, связанный с переданными переменными события. Мне нужно использовать их в других ситуациях, в которых нет переменных. Его изменение представляло проблему, поэтому я надеялся, что есть лучшее решение. Кажется, что это просто природа вида Repeater, но как я могу получить доступ к ним всем, чтобы стилизовать их после того, как они были установлены? - person Andy; 06.09.2013
comment
Если вам нужно изменить строку в повторителе позже, вам нужно будет использовать renderRow(inIndex) - person Pre101; 06.09.2013
comment
Еще вопрос, если не возражаете. У меня проблемы с репитером. В onSetupItem кажется, что для всех элементов, кроме первого, возвращается значение null. Я предполагал, что он дублирует то, что находится в ретрансляторе, на основе count. Не могли бы вы объяснить, как на самом деле работает Repeater и что я могу делать неправильно? - person Andy; 07.09.2013