Данные в компонентах искрятся в ItemRenderer в Flex - PullRequest
0 голосов
/ 26 апреля 2011

Мне нужно создать слайд-шоу, используя данные, полученные из другого представления.

Я называю вид слайд-шоу следующим образом:

<s:List id = "list" dataProvider = "{actions}"
change = "navigator.pushView (DetailsProduct, list.selectedItem) ">
<s:itemRenderer>
<fx:Component>
<s:MobileIconItemRenderer
labelField = "title"
messageField = "description"
decoratorClass = "{data.icon}">
</s:MobileIconItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>

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

И другая проблема в том, что я вижу объект, полученный за пределами списка, но не внутри него.

С этим кодом объект появляется, но кнопки назад и вперед не работают.

<s:List id = "myList"
     dataProvider = "{actions}">
</s:List>

<s:Image source="{data.icon}"/>
<s:Label text="{data.title}"/>
<s:Label text="{data.description}"/>

<s:HGroup>
<s:Button label="Forward" click="imgForward(event)"/>
<s:Button label="Back" click="imgBack(event)"/>
</s:hgroup>

И этот код ничего не показывает, даже объект вызывается одинаково.

<s:List id = "myList"
     dataProvider = "{actions}">
         <s:itemRenderer>
     <fx:Component>
     <s:ItemRenderer>
         <s:Image source="{data.icon}"/>
         <s:Label text="{data.title}"/>
         <s:Label text="{data.description}"/>
     </s:ItemRenderer>
     </fx:Component>
     </s:itemRenderer>
</s:List>

<s:HGroup>
     <s:Button label="Forward" click="imgForward(event)"/>
     <s:Button label="Back" click="imgBack(event)"/>
</s:hgroup>

1 Ответ

2 голосов
/ 26 апреля 2011

Я на самом деле не понимаю, чего вы пытаетесь достичь.Свойство data определено в интерфейсе IDataRenderer .

Когда компонент используется в качестве средства визуализации, элемент данных, который представляет экземпляр компонента, передается врендер, используя свойство data.

Вы не подсчитали, что означает «работает или« не работает », поэтому я не уверен, каково ваше желаемое поведение, и почему кто-то не прав, а кто-то нет». В первом примереЯ не ожидал бы, что свойство данных будет иметь какое-либо значение:

<s:List id="myList"
    creationComplete="criaLista(event)"
    dataProvider="{actions}">
</s:List>

<s:Image source="{data.icon}"/>
<s:Label text="{data.title}"/>
<s:Label text="{data.description}"/>

Я не уверен, что содержит dataProvider, но если он содержит объекты, я бы ожидал, что что-то будет отображаться в списке.ожидайте, что изображение и метки не будут отображать визуальные элементы, потому что свойство data, скорее всего, имеет значение null. Если вы хотите сослаться на элемент, выбранный в списке, вместо доступа к данным, вы можете получить что-то вроде этого:

<s:Image source="{myList.selectedItem.icon}"/>
<s:Label text="{myList.selectedItem.title}"/>
<s:Label text="{myList.selectedItem.description}"/>

Он использует свойство selectedItem из экземпляра списка для изменения элементов отображения.

Во втором примере, где вы создаете itemRenderer, я ожидаю, что он будет работать:

<s:List id="myList"
    creationComplete="criaLista(event)"
    dataProvider="{actions}">
        <s:itemRenderer>
    <fx:Component>
    <s:ItemRenderer>
        <s:Image source="{data.icon}"/>
        <s:Label text="{data.title}"/>
        <s:Label text="{data.description}"/>
    </s:ItemRenderer>
    </fx:Component>
    </s:itemRenderer>
</s:List>

Однако itemRenderer ничего не делает для позиционирования изображения или двух меток, поэтому я ожидаю, что они будут наложены друг на друга, что, вероятно, нежелательное поведение.Вы можете установить значения X и Y, чтобы определить их размер.

Если вы хотите уточнить конкретные проблемы;почему ваш первый образец «работает», а второй нет, пожалуйста, сделайте.

...