Получить обновленную длину массива - PullRequest
0 голосов
/ 13 марта 2011

Я пытаюсь получить длину массива через 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 ]

1 голос
/ 13 марта 2011

Вы используете привязки для отображения свойства длины реки в test1.Дело в том, что ваша коллекция - массив.Array не отправляет события при его изменении, поэтому привязка никогда не срабатывает.

Вместо этого используйте экземпляр ArrayCollection.

0 голосов
/ 13 марта 2011

Попробуйте что-то вроде этого:

    [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"/> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...