Flex - 将数据传递到选项卡式视图

问题描述:

我有一个项目,有4个视图,在tabBar中使用viewStack/NavigatorContent。我有几个HTTPServices设置收集XML并转换为Bindable ArrayCollections。什么时候以及如何将这些数据传递给图表,数据网格等等,直到用户点击标签才能看到?现在我有每个项目都设置了creationComplete函数,然后传递它。虽然它似乎在工作,这是最好的方式,还是有更好的,甚至更快?Flex - 将数据传递到选项卡式视图

谢谢, 马克

的最佳方法是使用数据绑定。假设您有一个主容器,其中包含代表标签内容的女巫组件。所以,你应该有数据[Bindable]特性在主容器类似如下:

[Bindable] 
private var chartData:ArrayCollection; 

[Bindable] 
private var dataGridData:ArrayCollection; 

所以对于该组件,含有图表,你应该填充图表数据与数据绑定:

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

当然,您应该在您的MyChartsTab组件中引入相同的chartData字段(请确保它是public)。您的图表也可以使用数据绑定来填充。

所以获取数据后,您只需填写主要组件中的字段,然后执行数据绑定即可完成剩余工作,而无需担心从您身边进行初始化。

当创建你的意见,确保你允许公共变量(如“数据提供程序”),在那里你可以绑定它需要的数据。就像这样:

<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