PDA

Просмотр полной версии : биндинг массива


gagaga
27.07.2012, 13:52
<s:ButtonBar>
<s:dataProvider>
<mx:ArrayCollection source="[{var1}, 'text', {var2}]" />
</s:dataProvider>
</s:ButtonBar>

как сделать такое но только чтобы работало?

Добавлено через 2 минуты
в данном случае биндится нормально, но массив почему-то преобразовывается в строку

Silicium
27.07.2012, 14:09
массив почему-то преобразовывается в строку
так и должно быть. Попробуй так:
<mx:ArrayCollection source="{[{var1}, 'text', {var2}]}" />

gagaga
27.07.2012, 14:15
ошибка

Добавлено через 2 часа 1 минуту
вопрос по прежнему актуален

wvxvw
27.07.2012, 16:44
<?xml version="1.0" encoding="utf-8"?>
<!-- ArrayCollectionInitializationExample -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600">
<fx:Declarations>
<fx:String id="string1">String 1</fx:String>
<fx:String id="string2">String 2</fx:String>
<s:ArrayCollection id="provider">
<s:source>
<fx:Array>
<fx:String id="var0">variable #0</fx:String>
<fx:String id="var1">variable #1</fx:String>
<fx:String id="var2">variable #2</fx:String>
</fx:Array>
</s:source>
</s:ArrayCollection>
</fx:Declarations>
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:List dataProvider="{provider}"/>
<s:List dataProvider="{new ArrayCollection(['variable #0', 'variable #1', 'variable #2'])}"/>
<s:List>
<s:dataProvider>
<s:ArrayCollection source="{[string1, 'literal string', string2]}"/>
</s:dataProvider>
</s:List>
</s:Application>
Но если честно, то лучше биндинги не использовать, код будет проще и понятнее остальным, да и самому искать в нем ошибки будет проще.

gagaga
27.07.2012, 17:17
у меня эти переменные выводятся в разных компонентах

Добавлено через 4 минуты
<s:ButtonBar dataProvider="{new ArrayCollection([var1, 'text', var2])}" /> - это то что надо

Silicium
27.07.2012, 18:26
Точно, он же не массив а IList принимает.