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

时间:2011-04-18 17:30:14

标签: flex flex4 httpservice dataprovider viewstack

我有一个包含4个视图的项目,我正在使用带有viewStack / NavigatorContent的tabBar。我有几个HTTPServices设置收集XML并转换为Bindable ArrayCollections。何时以及如何将数据传递给图表,dataGrids等之类的东西,直到用户点击标签才能看到?现在我让每个项目都设置了creationComplete函数然后传递它。虽然它似乎有效,但这是最好的方式,还是有更好的东西,甚至可能更快?

谢谢, 标记

2 个答案:

答案 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;
}