Результатом itemRenderer является неопределенный метод - PullRequest
0 голосов
/ 08 мая 2009

У меня есть mxml-файл с кучей функций в теге script и компонент List, который использует собственный itemRender для добавления изображения в каждую запись списка. Но когда я добавляю вызов функции по щелчку изображения, я получаю ошибку «вызов неопределенного метода». Несмотря на то, что моя функция прямо на той же странице ... вот как это выглядит:

<mx:List x="10" y="38" width="358" height="231" id="audioPlaylist" change="playSong(event)" alternatingItemColors="[#7DC1F0, #4DAEF1]" color="#000000" labelField="title" fontSize="10" themeColor="#FFFFFF">
    <mx:itemRenderer>
        <mx:Component>
            <mx:HBox width="100%" height="20" horizontalAlign="left">
                <mx:HBox width="100%" height="100%" horizontalAlign="left">
                    <mx:Text text="{data.title}"/>
                </mx:HBox>
                <mx:HBox width="100%" height="100%" horizontalAlign="right">
                    <mx:Image id="iTunesButton" source="@Embed(source='assets/iTunes.png')" toolTip="Click to buy this song on iTunes"  click="iTunesLink(data.buyLink)"/>
                </mx:HBox>                           
            </mx:HBox>
        </mx:Component>
    </mx:itemRenderer>                                               
    </mx:List>

Функция iTunesLink () находится прямо на странице вместе с множеством других функций, которые не вызывают проблем, но почему она возвращает undefined?

Ответы [ 2 ]

0 голосов
/ 14 мая 2009

Средства визуализации элементов фактически преобразуются в отдельные классы, поэтому оператор «this» относится к компоненту, а не к содержащему его файлу.

Лучший способ справиться с этим - это всплывающие события. Создайте пользовательское событие, установите для пузырька значение true и отправьте его из вашего компонента. Затем в файле, содержащем список, прослушайте это событие (для содержащего класса!) - (вам нужно будет сделать это в ActionScript, если вы не хотите расширять список и добавлять [Event (name = "myCustomEvent", type = "me.MyEvent")] к расширению). Тогда вы можете вызвать свою функцию.

Я обычно определяю средства визуализации элементов в отдельных файлах ... Проще понять, что происходит.

0 голосов
/ 08 мая 2009

Попробуйте externalDocument.iTunesLink (data.buyLink)

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