ArrayCollection dataProvider のリストがあります。私のプログラムには、ユーザーがクリックして List の selectedIndex の機能を実行できるボタンがありますが、アクションを実行するかどうかを確認するアラートが最初に表示されます。ユーザーがアラートに回答すると、リストの 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 であると見なされるため、例外がスローされます。