Apache flex Flex:基于标记的事件处理程序的编程等价物?

Apache flex Flex:基于标记的事件处理程序的编程等价物?,apache-flex,events,actionscript,event-handling,Apache Flex,Events,Actionscript,Event Handling,当我创建如下内容时: <mx:DataGrid id"myDataGrid" itemEditBegin="myDataGrid_itemEditBeginHandler(event)" /> 什么时候添加和删除“itemEditBegin”的事件侦听器?这基本上与: <mx:DataGrid id="myDataGrid" creationComplete="myDataGrid_creationCompleteHan

当我创建如下内容时:

<mx:DataGrid id"myDataGrid"
             itemEditBegin="myDataGrid_itemEditBeginHandler(event)" />

什么时候添加和删除“itemEditBegin”的事件侦听器?这基本上与:

<mx:DataGrid id="myDataGrid"
             creationComplete="myDataGrid_creationCompleteHandler(event)" />

protected function myDataGrid_creationCompleteHandler(event:FlexEvent):void
{
    this.myDataGrid.addEventListener(DataGridEvent.ITEM_EDIT_BEGIN,
                                     this.myDataGrid_itemEditBeginHandler);
}

protected function myDataGrid_whatEventDispatcherGoesHere?Handler(event:FlexEvent):void
{
    this.myDataGrid.removeEventListener(DataGridEvent.ITEM_EDIT_BEGIN,
                                        this.myDataGrid_itemEditBeginHandler);
}

受保护函数myDataGrid_creationCompleteHandler(事件:FlexEvent):void
{
this.myDataGrid.addEventListener(DataGridEvent.ITEM\u EDIT\u BEGIN,
这是.myDataGrid_itemEditBeginHandler);
}
受保护函数myDataGrid_WhateventDispatcherGoesher?处理程序(事件:FlexEvent):无效
{
this.myDataGrid.removeEventListener(DataGridEvent.ITEM\u EDIT\u BEGIN,
这是.myDataGrid_itemEditBeginHandler);
}

基本上,我想知道如果我想以编程方式添加“myDataGrid.addEventListener”,应该在哪里添加?它应该位于对象本身的creationComplete侦听器函数中,还是位于它所在的任何父对象的creationComplete侦听器函数中?

如果以编程方式添加事件侦听器:

  • 对象的creationComplete处理程序是一个很好的地方
  • 如果您是以编程方式创建dataGrid,只需在实例化对象后随时添加它即可
  • 将其放入父级的creationComplete处理程序会给代码增加不必要的复杂性,我不建议这样做。然而,它将起作用

在Flex中创建对象的好参考:

谢谢!把它拿走怎么样?当对象被销毁时,是否有什么东西可以删除侦听器,或者最好手动删除它?您不应该手动删除事件侦听器。当对象被销毁时,侦听器将随之销毁。