我试图通过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是陈旧的?
答案 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"/>