获取更新的数组长度

时间:2011-03-13 11:57:34

标签: flex

我试图通过mxml(而不是actionscript)获取数组的长度。我有以下内容:

<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" 
>


<fx:Script>
    <![CDATA[


        [Bindable]
        public var rivers:Array = ["Nile", "Amazon", "Yangtze", "Mississippi"];



        protected function remove(event:MouseEvent):void
        {
            rivers.pop();
            test2.text = String( rivers.length );

        }

    ]]>
</fx:Script>

<s:VGroup>

<mx:Text id="test1" text="{rivers.length}" color="red"/>
<mx:LinkButton label="remove Item" click="remove(event)" />

<mx:Text id="test2" color="blue"/>  

</s:VGroup>

</s:Application>

为什么test2显示正确的数组长度,但test1是陈旧的?

2 个答案:

答案 0 :(得分:1)

使用绑定在test1中显示河流长度属性。 事情是你的集合是一个数组。 数组不会在事件发生变化时调度,这就是从未触发绑定的原因。

改为使用ArrayCollection实例。

答案 1 :(得分:0)

尝试这样的事情:

    [Bindable]
    var len:String = "0";
    [Bindable]
    public var rivers:ArrayCollection = ["Nile", "Amazon", "Yangtze", "Mississippi"];

    <mx:Script>
        <![CDATA[
                protected function remove(event:MouseEvent):void {
                    rivers.removeItemAt(0);
                    len = String( rivers.length );

                }
        ]]>
    </mx:Script>

    <mx:Text id="test1" text="{len}" color="red"/>
    <mx:LinkButton label="remove Item" click="remove(event)" />

    <mx:Text id="test2" color="blue"/>