Apache flex 在Flex应用程序中定义和更新MXML组件的最佳实践

Apache flex 在Flex应用程序中定义和更新MXML组件的最佳实践,apache-flex,mxml,Apache Flex,Mxml,Flex组件值由init方法初始化。 在应用程序流中, 如何刷新mxml组件数据值;因为init仅在启动时调用 mxml组件的示例可能是 像按钮标签或文本一样简单 与数据提供者为web服务的中继器一样复杂 (意味着应进行新的查询以提取数据并刷新中继器的数据提供程序)如果数据提供程序是集合或数组,则在向集合中添加或从集合中删除项目时,它将更新自身。您可以侦听CollectionEvent.CollectionChange事件以查看集合何时更改 我不太清楚你的意思是什么?关于绑定,您是否已启动?如果

Flex组件值由init方法初始化。 在应用程序流中, 如何刷新mxml组件数据值;因为init仅在启动时调用

mxml组件的示例可能是 像按钮标签或文本一样简单 与数据提供者为web服务的中继器一样复杂
(意味着应进行新的查询以提取数据并刷新中继器的数据提供程序)

如果数据提供程序是集合或数组,则在向集合中添加或从集合中删除项目时,它将更新自身。您可以侦听CollectionEvent.CollectionChange事件以查看集合何时更改


我不太清楚你的意思是什么?关于绑定,您是否已启动?

如果要重新初始化整个控件,可以创建一个“重置”事件,并让重置处理程序执行与初始化代码相同的行为


这是我在没有更多详细信息的情况下所能做的最好的…

您应该为要修改的属性创建自己的setter和getter,然后需要刷新。例如:

private var _tmp : String = '';
public function set tmp(val : String) : void {
      this._tmp = val;
      this.doOtherDataRefreshNeeded();
}
public function get tmp() : String {
      return this._tmp;
}
这样,每次使用这个组件的代码都需要更新它的tmp属性。setter将被调用,在那里,除了赋值之外,还会发生很多其他事情


对于作为文本和输入的简单mxml组件,使用绑定{}作为其数据值。这些数据应在数据发生变化时立即更新。如果没有,请对其调用.invalidateNow()方法以强制更新。

在更新方法中使用mxml组件中的ValidateNow()方法请给出要刷新的数据类型的示例。可以为mxml中继器组件或任何组件提供模板代码。这将澄清ideaArrays不会在内部更改时触发事件,例如,当一个项目被推送到它时,因此您的声明是不正确的。但是,ArrayCollection不会触发事件,应该像您所说的那样使用。这实际上不是最佳实践。在一帧中,setter可能被调用十次、一百次甚至数千次,这意味着要进行多次不必要的计算。最佳实践是调用其中一个失效方法(可能是invalidateProperties),然后在提交阶段(commitProperties)执行刷新所涉及的实际工作。这保证了虽然在一个框架内可以多次调用Invalidate方法,但实际工作只执行一次。我认为invalidateProperties是更好地控制UI组件的默认方法