【问题标题】:What is the order of event dispatch in Flex 3?Flex 3 中事件调度的顺序是什么?
【发布时间】:2009-07-10 14:44:00
【问题描述】:

我有一个绑定到属性的复选框:

<mx:CheckBox label="Show All" selected="{showAll}"/>

我想在复选框被切换时触发一个事件,该事件将在更改后读取showAll 的值:

<mx:CheckBox label="Show All" selected="{showAll}" click="_list.refresh()" />

在这种情况下,_list 是一个 ArrayCollection 对象,其过滤功能依赖于 showAll 字段来选择值。

事实证明这不起作用,或者至少给人一种不工作的强烈外观(列表中的值没有改变和所有)。是否有记录的事件顺序,以便我可以发现哪些事件以哪个顺序分派,以及绑定值更改是否会在分派 click 事件时触发?或者,有人可以推荐一种更好的方法吗?

【问题讨论】:

  • 你能发布更多代码吗?我认为您可能非常接近,但问题可能在于方法的一个小细节或细节。另外,我认为您可能想要使用更改事件,而不是点击事件(不过,如果没有看到您的整个系统,我真的不能说)。
  • 我怀疑你是对的;更改事件听起来是正确的方法。让我试试……
  • 嗯。没有。更改事件似乎没有解决问题。我在过滤器函数中设置了一个断点,在切换复选框后,我看到 showAll 属性还没有反映复选框的状态。
  • 我最终使用了一个直接设置标志的更改事件;显然绑定是单向的,我不知道。
  • 啊。是的。 Flex4 中的双向。但是,您可以在 AS 中创建 ChangeWatcher 对象来手动处理绑定。查看 mx.binding.utils 包。

标签: apache-flex actionscript-3 events event-handling


【解决方案1】:

我相信你的数据绑定是向后的......通过单击或更改事件更改复选框的状态不会更新 showAll 变量。它的工作方式相反...如果您更改 showAll 布尔值,它将自动将复选框的状态更新为选中或未选中。

【讨论】:

    【解决方案2】:

    在一般意义上,弹性事件顺序是:

    1. 预初始化
    2. 初始化
    3. 创建完成
    4. 更新完成

    参考http://livedocs.adobe.com/flex/3/html/help.html?content=layoutperformance_03.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2010-10-15
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多