Я хочу показать пользователю окно подтверждения при снятии флажка. Мой код работает, хотя я думаю, что это немного взломать. Я слушаю флажок и показываю предупреждение. В зависимости от результата я установил флажок для повторной проверки.
Мой код
<?xml version="1.0"?>
<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" >
<fx:Script><![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;
private function handleCheckBoxChange(e:Event):void {
if (!CheckBox(e.target).selected) {
Alert.show("Are you sure you want to deselect?", "Confirm",
Alert.YES | Alert.NO, null, handleAlert, null, Alert.YES);
}
}
public function handleAlert(event:CloseEvent):void {
if (event.detail == Alert.YES) {
trace("yes clicked");
}
else if (event.detail == Alert.NO) {
cb1.selected = true;
trace("no clicked");
}
}
]]></fx:Script>
<s:CheckBox id="cb1" label="cb1" click="handleCheckBoxChange(event)"/>
</s:NavigatorContent>
Есть две вещи, которые мне не нравятся в этом
- код относится к cb1 и не может быть повторно использован для других флажков
- флажок снят, когда появляется предупреждение. Затем, когда пользователь нажимает нет, флажок устанавливается снова.
В идеале я хочу остановить событие снятия отметки, если пользователь нажимает нет в окне предупреждения. Можно ли перехватить это во Flex?
Спасибо