0

我有一个有 4 个视图的项目,我将 tabBar 与 viewStack/NavigatorContent 一起使用。我有几个 HTTPServices 设置收集 XML 并转换为 Bindable ArrayCollections。何时以及如何将数据传递给图表、dataGrids 等在用户单击选项卡之前不可见的事物的最佳方式是什么?现在,我已经为每个项目设置了 creationComplete 函数,然后传递它。尽管它似乎有效,但这是最好的方法,还是有更好甚至更快的方法?

谢谢,马克

4

2 回答 2

1

最好的方法是使用数据绑定。假设您有一个主容器,其中包含ViewStack代表选项卡内容的女巫组件。因此,您应该[Bindable]在主容器中具有数据属性,如下所示:

[Bindable]
private var chartData:ArrayCollection;

[Bindable]
private var dataGridData:ArrayCollection;

等等

因此,对于包含图表的组件,您应该使用数据绑定填充图表数据:

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

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

因此,在获取数据后,您只需在主组件中填写您的字段,数据绑定将执行其余工作,而无需您关心初始化。

于 2011-04-18T17:40:14.843 回答
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;
}
于 2011-04-18T17:37:26.713 回答