Ich frage mich, wie das in Flex zu erreichen.Flex Script und Event Frage
Grundsätzlich habe ich Drag-and-Drop in einigen meiner Listensteuerelemente aktiviert.
<mx:DataGrid id="dg1" width="100%" height="100%" dataProvider="{xmllcData}"
dropEnabled="true" dragDrop="dg1_dragDropHandler(event)">
</mx:DataGrid>
In der Funktion dg1_dragDropHandler Ereignis habe ich die folgenden Codes:
private function dg1_dragDropHandler(evt:DragEvent):void
{
// Perform some actions here...
// .......
// Show Message to Confirm.
Alert.show('Proceed?', 'Title', Alert.YES | Alert.NO, null, handleAlert, null, Alert.YES);
}
private function handleAlert(evt:CloseEvent):void
{
if (evt.detail == Alert.YES)
{
// Perform the functions as necessary
}
else
{
// Execute the script to prevent the dropping of the object.
// How can I call the DragEvent.preventDefault(); function from here?
}
}
In den Codes oben, ich will da das die prevent() auf der alertHandler Funktion aufzurufen Andere Skripts nach dem Aufruf des Alert.show in dg1_dragDropHandler-Ereignis würden gleichzeitig mit der alert.show ausgeführt werden.
Wie kann ich das DragEvent des dg1_dragDropHandler-Ereignisses vom alertHandler-Ereignis referenzieren?
Der Parameter preventDefault soll den DragDrop-Vorgang verhindern, wenn die Bedingung nicht erfüllt ist. Wie Sie sehen können, habe ich dort eine limitierende Alert.show-Funktion platziert, um vom Benutzer zu bestätigen, ob er trotz * der Bedingung mit der Operation fortfahren soll. Wenn der Benutzer auf NO klickt, habe ich keine Ahnung, wie der alertHandler mit der preventDefault-Funktion umgehen kann, die nur für das dragEvent verfügbar ist. – Angelo
Was ich sage ist, dass ich erwarte, dass es zu spät ist, wenn Sie auf "NEIN" klicken. Das Problem ist, ich glaube, Sie haben es mit mehreren Callstacks zu tun. Während der Alarmdialog angezeigt wird, erwarte ich, dass Ihre anderen Anruflisten das Ereignis ausführen und abschließen. Vielleicht, was Sie tun wollen, lassen Sie den Tropfen, aber wenn "NEIN" ausgewählt ist, löschen Sie den Tropfen sofort. – Glenn
Ja, du hast recht. Die anderen Aufruf-Stacks werden sofort ausgeführt. Wenn das Nein ausgewählt ist, dann verhindern Sie das Löschen, indem Sie preventDefault des Ereignisses aufrufen. Aber wenn Sie das Gleiche nur vom alertHandler aus tun könnten, wie würden Sie dann auf das dragEvent verweisen? – Angelo