【问题标题】:Flex 4 component is created before dataprovider gets dataFlex 4 组件在 dataprovider 获取数据之前创建
【发布时间】:2015-05-23 10:21:21
【问题描述】:

我有一个自定义组件(列表),它从外部 xml 获取数据提供程序,它再次调用服务。数据提供程序按 ID 设置为自定义列表。

第一次加载屏幕时,列表是用数据生成的,但后来如果我刷新屏幕,列表加载为空,因为列表是在 dataprovider 从 xml 和服务获取值之前创建的。

每次如果我在调试模式下运行,我都会生成列表,因为我会等到 dataprovider 获取数据..但如果我在正常模式下运行,我有时会看到空列表。

【问题讨论】:

  • 获取结果时在运行时动态提供列表数据提供者。

标签: list apache-flex flex4 adobe flex3


【解决方案1】:

您可以尝试将 Dataprovider 绑定到列表。所以即使更新晚了也会自动更新列表。

您可以使用如下元数据标签:

 [Bindable]
private var arrayCollection:ArrayCollection;

并在动态获取数据时更新“arrayCollection”。

希望对你有帮助。

【讨论】:

  • 我正在从 flex 3.5 迁移到 flex 4.1。如果编译器设置为 3.5,那么我没有问题。如果我将编译器更改为 4.1,那么列表有时会出现,有时不会。如果我将 thread.sleep(100) 保留在我的 java 类中,那么列表将一直出现。我还发现,在 flex 初始化之后,如果需要时间来加载 UI 列表,加载栏就会填满。如果加载栏填满并且 UI 立即出现,列表不会出现。不知道为什么会这样。
  • 我认为这不是一个逻辑问题。这可能与您正在切换的 FLEX SDK 有关。而且初始化进度条立即填充可能是因为“缓存”。我只是猜测。一切顺利。
  • services-config.xml和频道轮询有什么关系吗?
【解决方案2】:

数据绑定可以解决您的问题。 其他方式可以在服务获取结果时设置列表的数据提供者 - 呼叫服务 - 服务获取数据 - list.dataProvider = 服务结果

无论如何,数据绑定似乎是最好的解决方案

[Bindable]
private var arrayCollection:ArrayCollection;

<s:List dataProvider="{arrayCollection}" ....

【讨论】:

  • 感谢您的回复。我尝试了所有这些但没有奏效。我的问题是几次像 5% 的概率列表已加载。如果我重新启动服务器,列表将加载一次,然后它不会加载。我认为 java flex 交互的问题。如果我在从服务获得结果后将 thread.sleep(100) 保留在 javaclass 中,则该列表一直在加载。但我不应该使用 sleep。对此有什么想法吗?
  • 也许你可以展示一些代码。也许您没有等待从服务器获取数据。
  • 代码与您在上面表示的方式相同。对于其他组件,如数据网格、复选框数组、单选按钮组、标签......但对于列表它没有发生。在频道中有什么可做的吗轮询和 services-config.xml ?我们可以为处理添加一些延迟或删除缓存吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 2021-12-22
  • 1970-01-01
  • 2019-02-03
  • 2022-12-10
  • 2011-11-21
  • 2011-12-16
相关资源
最近更新 更多