我已经阅读了如何做到这一点,但我的实施不足。我想要一个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 );
}
我错过了什么?我认为这是如何从我在这里阅读的其他帖子中做到的。
任何提示将不胜感激。
谢谢!
答案 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 );
}