Flex - привязка данных не работает - PullRequest
0 голосов
/ 04 мая 2010

У меня проблемы с привязкой данных.

У меня есть приложение, которое содержит набор компонентов. Допустим, у меня есть comp1, comp2 и comp3 внутри стека просмотра. Каждый компонент имеет свой собственный класс данных -> comp1Data.as, comp2Data.as и comp3Data.as. Все значения в каждом компоненте связаны с соответствующими данными в его объекте данных.

Щелчок в элементе управления в comp1 приводит к comp3, то же самое касается comp2. Нажатие элемента управления в comp2 приводит к comp3. При переходе от comp1 к comp3 инициализируется comp3Data.as, а comp3 отображает связанные значения. При переходе от comp2 к comp3 также инициализируется comp3Data.as, но связанные значения не отображаются ...

Я попытался использовать инициализацию, но она не работает. И при отладке данные тут же, но они не отображаются.

Любая помощь будет очень признательна. С уважением,

BS_C3


Какой-то код ^ __ ^ Основное применение:

<mx:Application>
    <mx:Script>
        <![CDATA[
            private function order(s:String):void
            {
                if(s == 'order')
                    OrderData.instance.state = 'order';
                else if(s == 'reporting')
                {
                    OrderData.instance.state = 'reporting';
                    .
                    .
                    .

                }
                pages.selectedChild = or;
            }
        ]]>
    </mx:Script>

    <mx:ViewStack id="pages" horizontalCenter="0" verticalCenter="0" width="100%" height="100%">
        <components:SearchResult id="sr" width="100%"
            order="order('order')"
            />
        <components:Reporting id="rp" width="100%"
            reportingOrder="order('reporting')"/>
        <components:Order id="or" width="100%"
            />
    </mx:ViewStack>
</mx:Application>

Порядок доступа к SearchResult и Reporting.

Order.mxml выглядит так:

<mx:Canvas>
    <mx:HBox width="100%">
        <mx:Box paddingBottom="15" paddingLeft="15" paddingRight="15" paddingTop="15" backgroundColor="#FFFFFF" height="100%">
            <components:OrderView id="ov"/>
        </mx:Box>   
        <mx:Spacer width="15"/>
        <components:OrderedSDR id="sdr" height="100%"/>     
    </mx:HBox>
</mx:Canvas>

У меня проблемы с OrderedSDR.mxml:

<mx:Canvas>
    <mx:VBox width="100%" height="100%" paddingBottom="28" paddingLeft="28" paddingRight="28" paddingTop="28" backgroundColor="#FFFFFF">
        <mx:HBox width="100%" paddingBottom="6" horizontalAlign="center">
            <mx:Canvas>
                <mx:Image id="thumbnailBG" source="@Embed(source='assets/Images/SearchResult/BoxBagueOverview.PNG')"/>              
                <mx:Image id="overview" source="{GlobalData.instance.collection.overview.toString()}"/>
                <mx:Label id="thumbnailCarats" 
                    text="{GlobalData.instance.collection.carats.toString() + GlobalData.instance.languageProperties.orderedSDR.imageInfo.toString()}"
                    styleName="OVLBL"
                    paddingBottom="5" paddingRight="10"
                    x="{thumbnailBG.x + thumbnailBG.width - thumbnailCarats.width}"
                    y="{thumbnailBG.y + thumbnailBG.height - thumbnailCarats.height}"/>
            </mx:Canvas>
        </mx:HBox>
        <mx:VBox id="mainBox" paddingBottom="8" paddingTop="8" verticalGap="6" width="180">
            <mx:HBox width="100%" height="13">
                <mx:Label width="80" 
                    text="{GlobalData.instance.languageProperties.orderedSDR.product.toString()}" 
                    styleName="OVDataLbl" opaqueBackground="#ECE5E2"/>
                <mx:Label text="{SearchResultData.instance.selectedSDR.matnr_fp}" styleName="OVData"/>
            </mx:HBox>

        <mx:HBox width="100%" height="13">
            <mx:Label width="80" 
                text="{GlobalData.instance.languageProperties.orderedSDR.netPrice.toString()}" 
                styleName="OVDataLbl" opaqueBackground="#ECE5E2"/>
            <mx:Label text="{SearchResultData.instance.selectedSDR.currSymbol + ' ' + SearchResultData.instance.selectedSDR.fNet_price_fp}" styleName="OVData"/>
        </mx:HBox>

            .
            .
            .
        </mx:VBox>
    </mx:VBox>
</mx:Canvas>

Внутри mainBox у меня есть список hbox с такой же структурой, как показано в первых двух Hbox.

Что касается источников данных, это следующие источники данных, которые я использую, их ожидаемое поведение и их фактическое поведение:

@

Embed(source='assets/Images/SearchResult/BoxBagueOverview.PNG --> The image is displayed as it should

GlobalData.instance.collection.overview.toString() --> GlobalData.instance.collection is a XMLList that contains the data for the image with id="overview". I do get the correct source, but the image is not displayed.

GlobalData.instance.languageProperties. ... --> It's a XMLList. The data is shown as it should.

SearchResultData.instance.selectedSDR.matnr_fp --> SearchResultData.instance.selectedSDR is an object that contains all the data that has to be displayed. Matnr_fp is a property of this object. And each hbox inside mainbox have to display a property of the object selectedSDR. The only property that is being displayed is SearchResultData.instance.selectedSDR.currSymbol. The other properties are not displaying even if the datasource is populated.

Надеюсь, это будет полезно. Спасибо!

С уважением, BS_C3

1 Ответ

0 голосов
/ 11 мая 2010

Похоже, никто не видел ничего плохого в коде ?? И я нет. Но, сделав другие изменения в коде, это, наконец, сработало. Все еще не знаю почему ...> _ <</p>

...