Como adicionar elementos a uma injetado matriz sem sobre-escrever os outros elementos Flex 4 com Salsa
-
21-12-2019 - |
Pergunta
Eu tenho uma matriz que eu estou usando para armazenar uma coleção de objetos.Meu aplicativo permite ao usuário adicionar novos objetos para a matriz e editar o conteúdo dos objetos.todos os objetos na matriz são do mesmo tipo e o problema que eu estou tendo é que se eu adicionar um novo objeto ou editar um objeto existente, em seguida, todos os objetos contidos na matriz tornar a cópia exata do objeto recém-adicionado.Existe alguma maneira de parar isto?
Na minha Aplicação eu tenho um objeto que armazena um ArrayCollection:
public class MyArray
{
public var array:ArrayCollection = new ArrayCollection;
}
eu tenho um objeto que eu desejo para armazenar instâncias do array:
public class MyObject
{
public var things:String;
}
A minha Principal arquivo mxml exibe todos os itens na MyArray em um datagrid que é realizada em um arquivo 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, em seguida, o actionscript do arquivo:
public class MainPM
{
[inject][Bindable]
public var thearray:MyArray;
public function addNew(thingtoadd:MyObject):void
{
thearray.addItem(thingtoadd);
}
}
Eu tentei incluir o código da aplicação é bastante grande, mas, se forem necessárias mais informações eu posso fornecer.
Solução
Ok, então o caminho para a sola este foi criar uma nova instância de MyObject e acrescentar que a MyArray em vez disso.
public function addNew(thingtoadd:MyObject):void
{
var addobj:MyObject = new MyObject;
addobj.things = thingtoadd.tings;
thearray.addItem(addobj);
}