目前项目中需要在List的Item切换前根据条件决定是否切换,在网上找到这样的思路:
自己实现的PreList基于List,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:List xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="onComplete();">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.ListEvent;
public var _lastIndex:Number = 0;
public function onComplete():void
{
addEventListener(ListEvent.CHANGE,onChange);
persistLastIndex();
}
public function persistLastIndex():void
{
_lastIndex = selectedIndex;
}
public function onChange(e:ListEvent):void
{
Alert.show("Are you sure to change the item?","Alert",Alert.OK|Alert.CANCEL,null,onAlertClicked);
}
public function onAlertClicked(e:CloseEvent):void
{
if(Alert.OK == e.detail)
{
_lastIndex = selectedIndex;
}
else
{
selectedIndex = _lastIndex;
}
}
]]>
</fx:Script>
</mx:List>
使用自定义的PreList:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:my="org.puremvc.as3.*" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <mx:VBox id="dd"> <my:PreList> <my:dataProvider> <fx:Array> <fx:Object data="1" label="Value 1" /> <fx:Object data="2" label="Value 2" /> </fx:Array> </my:dataProvider> </my:PreList> </mx:VBox> </s:Application>

被折叠的 条评论
为什么被折叠?



