Проблема ArrayCollection в flex

У меня есть коллекция массивов, в которую я добавляю различные значения модели, как показано ниже.

var ob:Object=new Object();
ob.name=string1;
ob.data=model.arraylist1;
ob.id=model.arraylist2;
nextArrayCollection.addItem(ob);

//model.arraylist1 value is changed here
//model.arraylist2 value is changed here

ob=new Object();
ob.name=string1;
ob.data=model.arraylist1;
ob.id=model.arraylist2;
nextArrayCollection.addItem(ob);

Проблема заключается в том, что когда второй элемент добавляется в nextArrayCollection, значение первого элемента в arraycollection также изменяется на то же, что и второй добавленный элемент.

Я действительно смущен тем, что здесь происходит. Каждый раз, когда я добавляю новый элемент в коллекцию nextArrayCollection, все существующие значения элементов меняются на новые. Является ли коллекция массивов с использованием ссылки, а не значения. Как я могу преодолеть эту проблему?

1 ответ

Я считаю, что это просто недоразумение ООП и использование ссылок на объекты:

Даже если вы добавляете два новых объекта (ob = new object()), вы указываете оба на свойства своей модели, это НЕ копируется при назначении, а ТОЛЬКО на него ссылаются.

Простым тестом было бы просто клонировать коллекцию:

ob=new Object();
ob.name=string1;
ob.data= objectUtil.clone(model.arraylist1);
ob.id=model.arraylist2;
nextArrayCollection.addItem(ob);

это не идеальная парадигма / модель для вашей структуры данных, хотя, я думаю, что решением будет сортировка данных, а не установка данных для model.arraylist1 и model.arraylist2.

Другие вопросы по тегам