我有一个带有 ArrayCollection 数据提供者的列表。在我的程序中,用户可以单击一个按钮来为列表的 selectedIndex 执行功能,但首先会显示一个警报,询问他们是否确定要执行该操作。用户回答 Alert 后,将对列表的 selectedIndex 执行操作。
我的问题是在警报窗口 CloseEvent 之后 selectedIndex = -1,即使它被明确选中。我通过在 Alert CloseEvent 的代码中的列表上执行 validateNow() 来解决这个问题。
我的问题:为什么我必须这样做,我做错了什么?或者这是正常/最佳实践?此外,除了使用 try-catch 之外,是否有更好的/最佳实践来检查列表以查看是否选择了某些内容。如果未选择任何内容,我不希望最终用户看到生成的错误。
代码:
//Note: "fl" is a class with "friendsList" bindable ArrayCollection; for the sake of keeping this short I will not include it
private function _removeFriendClick(event:MouseEvent):void
{
try {
if (this.friendsList.selectedIndex != -1) {
Alert.show("Are you sure you want to remove "+this.fl.friendsList[this.friendsList.selectedIndex].label+" as a friend?", "Remove Friend", Alert.YES | Alert.CANCEL, this, this._removeFriendConfirm, null, Alert.CANCEL);
}
} catch (e:Error) { }
}
private function _removeFriendConfirm(event:CloseEvent):void
{
this.friendsList.validateNow();
trace(this.friendsList.selectedIndex);
}
所以,使用上面的代码,如果你取出 validateNow(),就会抛出一个异常,因为它认为 selectedIndex 是 -1。