Cómo agregar elementos a una matriz inyectada sin sobrecargar los otros elementos en Flex 4 con perejil

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

Pregunta

Tengo una matriz que estoy usando para almacenar una colección de objetos.Mi aplicación permite al usuario agregar nuevos objetos a la matriz y editar el contenido de los objetos.Todos los objetos en la matriz son del mismo tipo y el problema que estoy teniendo es que si agrego un nuevo objeto o edita un objeto existente, todos los objetos contenidos en la matriz se convierten en copias exactas del objeto recién agregado. ¿Hay alguna manera de detener esto?

En mi solicitud, tengo un objeto que almacena un ArrayCollection:

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

Tengo un objeto que deseo almacenar instancias de esta matriz:

public class MyObject
{
    public var things:String;
}

Mi archivo MXML principal muestra todos los elementos de MyArray en un DataGrid que se mantiene en un archivo 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>

y luego el archivo ActionScript:

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

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

He intentado incluir el código relevante, ya que la aplicación es bastante grande, pero si se necesita más información, puedo proporcionarla.

¿Fue útil?

Solución

OK, así que la forma de exclusionar esto fue crear una nueva instancia de MyObject y agregarla a MyArray en su lugar.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top