删除监听器

时间:2011-07-25 16:36:32

标签: flex actionscript-3 flex3

我已经阅读了如何做到这一点,但我的实施不足。我想要一个updateComplete事件运行一次然后删除监听器。

这是组件:

<mx:ComboBox 
            id="templatesCombo" 
            dataProvider="{lendersModel.fileTemplateComposites}"
            prompt="Select Template" 
            width="200" 
            labelFunction="getTemplateName"
            change="onViewTempComboChange(event)"
            updateComplete="checkTemplatesLength(event);"/>

这是处理程序:

private function checkTemplatesLength( event:FlexEvent ):void{
            if( lendersModel.fileTemplateComposites.length == 1 ){
                this.templatesCombo.selectedIndex = 1;
                this.currentFileTemplate = templatesCombo.selectedItem as FileTemplateCompositeDTO;
                this.templateActions_bb.updateButtonVisibility( 2, true  ); // disable delete button
            }
            var cb:ComboBox = ComboBox( event.currentTarget )
            cb.removeEventListener( FlexEvent.UPDATE_COMPLETE, checkTemplatesLength );
        }

我错过了什么?我认为这是如何从我在这里阅读的其他帖子中做到的。

任何提示将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

也许它首先没有附加为事件监听器?!但我确信它的工作原理如下:

private var cb:ComboBox;

private function init():void {
    cb = // get the right combobox
    cb.addEventListener(FlexEvent.UPDATE_COMPLETE, checkTemplatesLength);
}

private function checkTemplatesLength( event:FlexEvent ):void{
    if (lendersModel.fileTemplateComposites.length == 1 ){
        this.templatesCombo.selectedIndex = 1;
        this.currentFileTemplate = templatesCombo.selectedItem as FileTemplateCompositeDTO;
        this.templateActions_bb.updateButtonVisibility( 2, true  ); // disable delete button
    }
    cb.removeEventListener( FlexEvent.UPDATE_COMPLETE, checkTemplatesLength );
}