2010-05-20 58 views
0

我在flex中遇到了一個問題,它引起了一些頭痛!在Flex中使用相同地址創建的兩個對象

我正在將對象添加到ArrayCollection中,但這樣做,即使沒有發生綁定,另一個ArrayCollection也正在拾取這些更改。

我可以從調試中看到兩個AC具有相同的地址,但對於我的生活無法弄清楚爲什麼。

我有兩個數組集合:

model.index.rows //The main array collection 

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

這幻象數據綁定只發生在循環中的第一次迭代中,對於所有其他它只是寫了一次。

這被證明是麻煩的原因是它會在我的數據網格中創建重複的條目。

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();     
      } 

     } 

有沒有其他人遇到過類似simillar提出的解決方案?

回答

0

我問同樣的問題在此計算器線程,並解釋是怎麼回事,和你能做些什麼來解決這個問題:

Changes to one variable propagates to another

拉吉斯拉夫

+0

非常感謝你的幫助! – James 2010-05-20 10:48:19

+0

沒問題,幾個月前有同樣的問題,你可以看到也在這裏解決:) – Ladislav 2010-05-20 11:01:45

0

諮詢上述提到的後線程我解決這樣問題:

我的代碼載列於另一個類,像這樣:

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

這似乎在整個代碼中傳播。相反,我將此行更改爲:

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

如提及的線程中所述。這爲我刪除了重複的條目! :o)

相關問題