我有一个包含4个视图的项目,我正在使用带有viewStack / NavigatorContent的tabBar。我有几个HTTPServices设置收集XML并转换为Bindable ArrayCollections。何时以及如何将数据传递给图表,dataGrids等之类的东西,直到用户点击标签才能看到?现在我让每个项目都设置了creationComplete函数然后传递它。虽然它似乎有效,但这是最好的方式,还是有更好的东西,甚至可能更快?
谢谢, 标记
答案 0 :(得分:1)
最好的方法是使用数据绑定。假设您有一个主容器,其中包含代表制表符内容的ViewStack
个女巫组件。因此,您应该拥有主容器中数据的[Bindable]
属性,如下所示:
[Bindable]
private var chartData:ArrayCollection;
[Bindable]
private var dataGridData:ArrayCollection;
等
因此,对于包含图表的组件,您应该使用数据绑定填充图表数据:
<ViewStack>
…
<MyChartsTab chartData="{chartData}" />
…
</ViewStack>
当然,您应该在chartData
组件中引入相同的public
字段(确保它是MyChartsTab
)。您的图表也可以填充数据绑定。
因此,在获取数据后,您只需填写主要组件中的字段,数据绑定即可执行其余工作,而无需进行任何初始化。
答案 1 :(得分:0)
创建视图时,请确保允许公共变量(如“dataProvider”)绑定所需的数据。像这样:
<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;
}