2011-04-18 56 views
0

我有一個項目,有4個視圖,在tabBar中使用viewStack/NavigatorContent。我有幾個HTTPServices設置收集XML並轉換爲Bindable ArrayCollections。什麼時候以及如何將這些數據傳遞給圖表,數據網格等等,直到用戶點擊標籤才能看到?現在我有每個項目都設置了creationComplete函數,然後傳遞它。雖然它似乎在工作,這是最好的方式,還是有更好的,甚至更快?Flex - 將數據傳遞到選項卡式視圖

謝謝, 馬克

回答

1

的最佳方法是使用數據綁定。假設您有一個主容器,其中包含代表標籤內容的女巫組件。所以,你應該有數據[Bindable]特性在主容器類似如下:

[Bindable] 
private var chartData:ArrayCollection; 

[Bindable] 
private var dataGridData:ArrayCollection; 

所以對於該組件,含有圖表,你應該填充圖表數據與數據綁定:

<ViewStack> 
    … 
    <MyChartsTab chartData="{chartData}" /> 
    … 
</ViewStack> 

當然,您應該在您的MyChartsTab組件中引入相同的chartData字段(請確保它是public)。您的圖表也可以使用數據綁定來填充。

所以獲取數據後,您只需填寫主要組件中的字段,然後執行數據綁定即可完成剩餘工作,而無需擔心從您身邊進行初始化。

0

當創建你的意見,確保你允許公共變量(如「數據提供程序」),在那裏你可以綁定它需要的數據。就像這樣:

<mx:ViewStack> 
     <s:NavigatorContent> 
      <SomeComponent dataProvider="{someData}" /> 
     </s:NavigatorContent> 
     <s:NavigatorContent> 
      <SomeComponent2 dataProvider="{someData}" /> 
     </s:NavigatorContent> 
    </mx:ViewStack> 

而且自定義組件內你必須:

private var _data:Object; // use strong typing if possible 

public function set dataProvider(value:Object):void // use strong typing if possible 
{ 
    this._data = value; 
} 

public function get dataProvider():Object 
{ 
    return this._data; 
} 
+0

謝謝你們,那真是太好了。 – 2011-04-19 16:48:36