Okay, entered as
https://bugs.adobe.com/jira/browse/SDK-19145

if anyone is interested in voting for it or watching it.


On Thu, Feb 5, 2009 at 1:56 PM, kuroiryu42 <kuroiry...@yahoo.com> wrote:

>   Yep its a bug, didn't bother to look it up but if you need a work around
> you could extend and override the combobox collectionChangeHandler
> look for the reset kind and remove the listener at that point.
>
> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Pan
> Troglodytes <chimpathe...@...>
> wrote:
>
> >
> > I'm running into something fairly perplexing. Read the following
> code and
> > think of what you'd expect it to do when you click the change
> button. Then
> > run it and click the change button.
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application
> > xmlns:mx="http://www.adobe.com/2006/mxml";
> > layout="vertical"
> > creationComplete="cc()"
> > >
> > <mx:Script>
> > <![CDATA[
> > import mx.collections.ArrayCollection;
> >
> > public var d1:ArrayCollection = new
> ArrayCollection([{label:"one"},
> > {label:"two"}, {label:"three"}]);
> > public var d2:ArrayCollection = new ArrayCollection([{label:"a"},
> > {label:"b"}, {label:"c"}]);
> > //public var d1:Array = [{label:"one"}, {label:"two"},
> > {label:"three"}];
> > //public var d2:Array = [{label:"a"}, {label:"b"}, {label:"c"}];
> >
> > private function cc():void
> > {
> > c1.dataProvider = d1;
> > c1.dataProvider = d2;
> > c1.selectedIndex = 1;
> > }
> >
> > private function change():void
> > {
> > trace();
> > trace();
> > trace(" before change: ");
> > trace(" c1.selectedIndex:", c1.selectedIndex);
> > trace(" c1.selectedItem: ", c1.selectedItem.label);
> >
> > d1.removeItemAt(0);
> > //d1.splice(0, 1);
> >
> > trace()
> > trace(" after change: ");
> > trace(" c1.selectedIndex:", c1.selectedIndex);
> > trace(" c1.selectedItem: ", c1.selectedItem.label);
> > }
> > ]]>
> > </mx:Script>
> > <mx:ComboBox id="c1"/>
> > <mx:Button label="change" click="change()"/>
> > </mx:Application>
> >
> >
> > What does it do? Well, the combobox changes from saying "b" to "a".
> The
> > trace says the following:
> > before change:
> > c1.selectedIndex: 1
> > c1.selectedItem: b
> >
> > after change:
> > c1.selectedIndex: 0
> > c1.selectedItem: b
> >
> > This is completely baffling. My only guess is that somewhere in the
> guts of
> > combobox or its ancestors, it is registering for changes on a
> dataProvider
> > and not unregistering them when the dataProvider changes. List does not
> > seem to suffer the same problem.
> >
> > If you comment out the ArrayCollection-based version and uncomment the
> > Array-based version, it works as expected.
> >
> > My next stop is a bug report, but I figured it'd be worth bringing up in
> > case anyone already knows of a bug report (kind of hard criteria to
> search
> > for) or a workaround if you need to use ArrayCollections.
> >
> > --
> > Jason
> >
>
>  
>



-- 
Jason

Reply via email to