2011-08-30 65 views
0

我目前正在使用使用FlexGlobals訪問一個ArrayCollection,我有我開發的移動應用程序的默認視圖的新方法。下面是構成其儘快應用程序啓動發生在默認視圖陣列的創建和人口代碼:嘗試使用FlexGlobals訪問的ArrayCollection?

private var ids:ArrayCollection = new ArrayCollection(); 

      private function loop():void 
      { 
       var index:int; 
       for(index = 0; index < compsCollection.length; index++) 
       { 
        trace("Element " + index + " is " + compsCollection[index].comp_id); 
        trace(ids.length); 
        ids.addItem(compsCollection[index].comp_id);      
       }    
      } 

現在這段代碼運行時,我可以清楚地從控制檯看到, 「ids」ArrayCollection正在正確填充。現在在應用程序的不同視圖中,我想訪問這些數據並將其用於各種事情。我用下面的代碼,試圖訪問數據中的ArrayCollection:

protected var ids_list:ArrayCollection = new ArrayCollection(); 

protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void 
      {    
       var obj:Object = FlexGlobals.topLevelApplication.parameters;  
       ids_list.source = obj.ids;    
       trace(ids_list.length);     
      } 

當我嘗試這方面,我沒有得到一個錯誤,不過跟蹤語句返回「0」。所以我也試過了:

protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void 
      {    
       ids_list.source = FlexGlobals.topLevelApplication.parameters.ids;    
       trace(ids_list.length);     
      } 

它在trace語句中再次返回「0」。我終於嘗試這個,看看它是否會工作:

protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void 
      {    
       ids_list.source = FlexGlobals.topLevelApplication.ids;    
       trace(ids_list.length);     
      } 

當我嘗試這樣做,導航到該代碼將initated我得到這個錯誤的觀點:

Error #1069: Property ids not found on Main and there is no default value. 

我只能假設我在默認視圖中創建的ArrayCollection一旦離開它,就沒有任何價值。反正任何人都可以請幫我這個,因爲似乎旁邊就怎麼做這類事情FlexGlobals沒有文件?由於

回答

1

You can't access a private property, try it

/* 
Replace 

private var ids:ArrayCollection = new ArrayCollection(); 

by 
*/ 

private var _ids:ArrayCollection = new ArrayCollection(); 
public set ids(value:ArrayCollection):void{ 
_ids = value; 
} 

public get ids():ArrayCollection{ 
return _ids 
} 
0

這是實踐中的子組件知道任何關於它的父/祖先的結構極其惡劣。話雖這麼說,你看不到應用程序的成員變量的值的原因是因爲你做了它私有的。如果你想讓它在自己的範圍之外可見,你需要公開它。

+0

更多關於爲什麼要避免全局狀態,退房http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/ –

0

傳遞的ArrayCollection作爲屬性從主應用程序的視圖。