【问题标题】:How to update multiple bindable properties in specific order? (Flex)如何按特定顺序更新多个可绑定属性? (柔性)
【发布时间】:2011-04-20 18:55:09
【问题描述】:

我遇到需要更新 DropDownList 的 dataProvider 和 selectedItem 的情况 以特定的顺序。见以下代码...

<s:DropDownList id="dropDownList"
                dataProvider="{someDataProvider}"
                selectedItem="{someSelectedItem}" />

在我的例子中,某些用户交互会为可绑定变量“someDataProvider”和“someSelectedItem”生成新值。但是,当 flex 呈现 DropDownList 时,控件的选定值是空的。

原因是 DropDownList 的“selectedItem”属性在“dataProvider”属性之前被绑定。需要先绑定“dataProvider”才能使“selectedItem”生效,这是因为新的“selectedItem”指向了新的“dataProvider”。

我的问题是,按特定顺序更新可绑定属性的最佳做法是什么?我想出了几种方法(例如,使用 valueCommit 处理程序),但我想看看社区怎么说。

【问题讨论】:

  • 我的冲动是说;不要使用绑定。需要时手动更新属性。

标签: apache-flex data-binding binding flex4


【解决方案1】:

我认为问题不在于形成数据提供者和选定项目的顺序。如果它们在将它们设置为 List 后在同一个 Flash Player 的框架中形成,它们不会立即应用。 Flex 使用失效将实际操作推迟到下一帧。

要解决您的问题,请发布更多代码。如果您发布形成数据的代码会很好。

您的 selectedItem 是否真的可能不是您的数据提供者的成员(某种克隆或其他)?您的数据提供者中的什么类型的对象?

【讨论】:

    【解决方案2】:

    这是一个困扰我很久的问题。这是有道理的,但没有。如果数据发生更改,您可能希望清除 selectedItem,但前提是数据实际上不同或不包含您选择的项目。

    就个人而言,我只会创建一个自定义组件,扩展 DropDownList 并覆盖 dataProvider、selectedItem 和 commitProperties 以防止清除 selectedItem。

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 2014-03-02
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多