2010-05-20 2 views
0

У меня проблема в flex, которая вызывает немного головной боли!Два объекта, созданных с тем же адресом в Flex

Я добавляю объекты в ArrayCollection, но при этом другой ArrayCollection также подбирает эти изменения, даже если нет привязки.

Из отладки видно, что два AC имеют один и тот же адрес, но для меня жизнь не может понять, почему.

У меня есть два массива Коллекции:

model.index.rows //The main array collection 

model.index.holdRows //The array collection that imitates the above 

Этот фантом связывания данных происходит только для первой итерации в цикле и для всех остальных это будет просто записать его на один раз.

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

public override function handleMessage(message:IMessage):void 
    { 

     super.handleMessage(message); 
     if (message is IndexResponse) 
     { 
      var response:IndexResponse = message as IndexResponse; 

      model.index.rows.removeAll(); 
      model.index.indexIsEmpty = response.nullIndex; 

      if (model.index.indexIsEmpty !== true) 
      { 

       //Update the index model from the response. Note: each property of the row object will be shown in the UI as a column in the grid 
       response.index.forEach(function(entry:EntryData, i:int, a:Array):void 
        { 
         var row:Object = { fileID: entry.fileID, dadName: entry.dadName }; 

         entry.tags.forEach(function(tag:Tag, i:int, a:Array):void 
          { 
           row[tag.name] = tag.value; 
          }); 

         model.index.rows.addItem(row); 

        }); 

       if(model.index.indexForNetworkView == true){ 

       model.index.holdRows.source = model.index.holdRows.source.concat(model.index.rows.source); 
       model.index.indexCounter++; 
       model.index.indexForNetworkView = false; 
       controller.indexController.showNetwork(model.index.indexCounter);     
       } 
       model.index.rows.refresh(); 
       controller.networkController.show();     
      } 

     } 

Есть ли кто-нибудь, кто столкнулся с чем-то похожим на предложение?

ответ

0

я задал тот же вопрос в этом StackOverflow нить и объясняется то, что происходит, и что вы можете сделать, чтобы решить эту проблему:

Changes to one variable propagates to another

Ladislav

+0

Огромная помощь Большое спасибо! – James

+0

Не проблема, была такая же проблема, что и пару месяцев назад, и, как вы можете видеть, также была решена прямо здесь :) – Ladislav

0

Посоветовавшись из упомянутых выше нить я решил проблему таким образом:

Я код, изложенный в другом классе, как так:

model.index.rows = model.index.holdRows; 

Это, по-видимому, распространяется по всему коду. Вместо этого я изменил эту строку на:

model.index.rows = new ArrayCollection(model.index.holdRows.source.concat()); 

как предложено в указанной резьбе. Это удалило дублирующую запись для меня! : o)