Actionscript 3 Flex ItemRender不更新数据源

Actionscript 3 Flex ItemRender不更新数据源,actionscript-3,apache-flex,itemrenderer,2-way-object-databinding,Actionscript 3,Apache Flex,Itemrenderer,2 Way Object Databinding,首先,抱歉,大量的代码和糟糕的编码,我已经有一段时间没有使用AS3/Flex了,在我的一生中,我都不记得如何在ItemRender中使用ItemRenderer来更新数据源。例如,GymButton2.mxmlsimple在单击按钮时向其提供的数据添加+1,这将更新原始数据源activeGym,但。。。我认为这是因为绑定没有按预期工作 <fx:Script> <![CDATA[ import mx.collections.Arra

首先,抱歉,大量的代码和糟糕的编码,我已经有一段时间没有使用AS3/Flex了,在我的一生中,我都不记得如何在ItemRender中使用ItemRenderer来更新数据源。例如,GymButton2.mxmlsimple在单击按钮时向其提供的数据添加+1,这将更新原始数据源activeGym,但。。。我认为这是因为绑定没有按预期工作

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;

            [Bindable]
            public var activeGym:Gym2;

        ]]>
    </fx:Script>

    <s:DataGroup x="33" y="56" width="200" height="200" dataProvider="{activeGym.sets}" itemRenderer="GymSetRenderer">
        <s:layout>
            <s:VerticalLayout />
        </s:layout>
    </s:DataGroup>

</s:WindowedApplication>
Main.mxml

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;

            [Bindable]
            public var activeGym:Gym2;

        ]]>
    </fx:Script>

    <s:DataGroup x="33" y="56" width="200" height="200" dataProvider="{activeGym.sets}" itemRenderer="GymSetRenderer">
        <s:layout>
            <s:VerticalLayout />
        </s:layout>
    </s:DataGroup>

</s:WindowedApplication>
GymSetRenderer.mxml

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;

            [Bindable]
            public var activeGym:Gym2;

        ]]>
    </fx:Script>

    <s:DataGroup x="33" y="56" width="200" height="200" dataProvider="{activeGym.sets}" itemRenderer="GymSetRenderer">
        <s:layout>
            <s:VerticalLayout />
        </s:layout>
    </s:DataGroup>

</s:WindowedApplication>
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="false" xmlns:local="*">

    <s:layout>
        <s:VerticalLayout />
    </s:layout>

    <s:Label fontSize="27" text="{data.title}"/>

    <s:DataGroup dataProvider="{data.data}" itemRenderer="GymButton2">
        <s:layout>
            <s:HorizontalLayout />
        </s:layout>
    </s:DataGroup>

</s:ItemRenderer>
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" autoDrawBackground="true">

    <fx:Script>
        <![CDATA[
            protected function onClick(event:MouseEvent):void
            {
                data = data + 1;
            }
        ]]>
    </fx:Script>

    <s:Button label="{data}" height="70" click="onClick(event)"/>

</s:ItemRenderer>

GymButton2.mxml

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;

            [Bindable]
            public var activeGym:Gym2;

        ]]>
    </fx:Script>

    <s:DataGroup x="33" y="56" width="200" height="200" dataProvider="{activeGym.sets}" itemRenderer="GymSetRenderer">
        <s:layout>
            <s:VerticalLayout />
        </s:layout>
    </s:DataGroup>

</s:WindowedApplication>
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="false" xmlns:local="*">

    <s:layout>
        <s:VerticalLayout />
    </s:layout>

    <s:Label fontSize="27" text="{data.title}"/>

    <s:DataGroup dataProvider="{data.data}" itemRenderer="GymButton2">
        <s:layout>
            <s:HorizontalLayout />
        </s:layout>
    </s:DataGroup>

</s:ItemRenderer>
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" autoDrawBackground="true">

    <fx:Script>
        <![CDATA[
            protected function onClick(event:MouseEvent):void
            {
                data = data + 1;
            }
        ]]>
    </fx:Script>

    <s:Button label="{data}" height="70" click="onClick(event)"/>

</s:ItemRenderer>

能否显示“GymSet”类源?如果数据只是一个数字,则无法查看,因此您必须通过事件自己更新数据。itemrenderer只需发送一个事件来请求数据更新。