Come aggiungere elementi a un array iniettato senza sovrascrittura gli altri elementi in flex 4 con prezzemolo

StackOverflow https://stackoverflow.com//questions/22047901

Domanda

Ho un array che sto usando per memorizzare una raccolta di oggetti.La mia applicazione consente all'utente di aggiungere nuovi oggetti all'array e modificare il contenuto degli oggetti.Tutti gli oggetti nell'array sono dello stesso tipo e il problema che sto avendo è che se aggiungo un nuovo oggetto o modificare un oggetto esistente, tutti gli oggetti contenuti nell'array diventano copie esatte dell'oggetto appena aggiunto. C'è un modo per fermare questo?

Nella mia applicazione ho un oggetto che memorizza un arraycollection:

public class MyArray
{
    public var array:ArrayCollection = new ArrayCollection;
}
.

Ho un oggetto che desidero memorizzare le istanze di in questo array:

public class MyObject
{
    public var things:String;
}
.

Il mio file MXML principale visualizza tutti gli elementi in MyARray in un DataGrid che si tiene in un file ActionScript:

<App xmlns:par="http://spicefactory.org/parsley">
    <fx:Declarations>
        <par:ContextBuilder config="MainContext"/>
        <par:Configure/>
        <par:FastInject property="mainpm" type="{MainPM}"/>
    </fx:Declarations>
    <fx:Script>
         [Inject][Bindable]
         public var mainpm:MainPM;
    <fx:Script>
.

E quindi il file ActionScript:

public class MainPM
{
    [inject][Bindable]
    public var thearray:MyArray;

    public function addNew(thingtoadd:MyObject):void
    {
        thearray.addItem(thingtoadd);
    }
}
.

Ho cercato di includere il codice pertinente poiché l'applicazione è abbastanza grande, ma se è necessaria più informazioni, posso fornirlo.

È stato utile?

Soluzione

OK, quindi il modo di risolvere questo è stato quello di creare una nuova istanza di MyObject e ad aggiungerlo al myArray invece.

public function addNew(thingtoadd:MyObject):void
{
    var addobj:MyObject = new MyObject;
    addobj.things = thingtoadd.tings;
    thearray.addItem(addobj);
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top