我有两个相关的组合框(大洲和国家)。当大陆 ComboBox 更改时,我从某个 URL 请求 XML。当我收到该 XML 时,我更改了国家组合框的 DataProvider,如下所示:
public function displayCountryArray( items:XMLList ):void
{
this.resellersCountryLoader.alpha = 0;
this.resellersCountry.dataProvider = items;
this.resellersCountry.dispatchEvent( new ListEvent( ListEvent.CHANGE ) );
}
我调度 ListEvent.CHANGE 因为我用它来更改另一个 ComboBox 所以请忽略它(和第一行)。
所以,我的问题是这样的:我从第一大洲中选择“亚洲”,然后组合框 DATA 得到更新(我可以看到,因为第一个项目是标签为“23 个国家”的项目)。我点击组合然后我可以看到国家。
现在,我选择“非洲”,显示第一个项目,关闭组合框,然后当我单击它时,国家仍然是来自亚洲的国家。无论如何,如果我单击列表中的某个项目,则列表会正确更新,并且它具有正确的信息(正如我所说的它会影响其他 ComboBoxes )。所以唯一的问题是显示列表没有更新。
在这个函数中,我尝试了这些方法
将 XMLList 转换为 XMLCollection 甚至 ArrayCollection
添加 this.resellersCountry.invalidateDisplayList();
触发像 DATA_CHANGE 和 UPDATE_COMPLETE 这样的事件我知道它们没有多大意义,但我有点绝望。
请注意,当我使用 3.0.0 SDK 时,这并没有发生。
对不起,如果我很愚蠢,但是弹性事件正在杀死我。