谁应该删除弹出窗口,调用应用程序或弹出窗口本身?

时间:2011-02-28 20:39:14

标签: flex events actionscript event-handling popup

这是场景......我有一个具有“打开”按钮的应用程序。当您单击打开按钮时,TitleWindow会弹出(通过PopUpManager)一个允许您选择记录的对话框。在该窗口中,您可以在选择记录后单击“确定”,或取消应该关闭窗口的对话框。

处理此问题的最佳方法是什么,知道我需要将记录号返回给主应用程序?现在我有主应用程序打开自定义TitleWindow。在TitleWindow中,当用户单击“确定”并选择了一条记录时,我会触发一个事件。这就是主应用程序监听recordId的方式。我想知道的是,如果我可以做这样的事情:

private function RecordSelected():void
{
    this.selectedRecord = someControl.selectedIndex;

    this.dispatchEvent(new Event("RecordSelected"));

    PopUpManager.removePopup(this);
}

TitleWindow的实例是否会在主应用程序处理事件之后保持活动状态,还是可以在主应用程序完全处理事件之前删除(因此以空引用异常结束)?

或者,最好是在事件处理程序中关闭窗口,如下所示:

private function titleWindow_RecordSelected(event:Event)
{
    var openDialog:CustomTitleWindow = CustomTitleWindow(e.currentTarget);

    this._selectedRecord = openDialog.selectedRecord;

    PopUpManager.removePopup(openDialog);
}

我也想知道在事件中发送选择是否也是最好的方法。任何见解将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

处理此问题的最佳方法是什么,   知道我需要退回记录   编号到主要应用程序?

最好总是主观的,但我通常会在窗口组件中处理关闭窗口;然后将具有适当数据的事件(在本例中为Record No)发送回应用程序。这听起来像是你的90%。只是不是调度事件事件,而是使用您的recordID创建自定义Event类。然后,当您需要使用记录ID时,弹出窗口是否仍然在内存中无关紧要。