如何按特定顺序更新多个可绑定属性? (柔性)

时间:2011-04-20 18:55:09

标签: flex data-binding binding flex4

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

要解决您的问题,请发布更多代码。如果您发布构成数据的代码,那将是件好事。

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

答案 1 :(得分:0)

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

就个人而言,我只想创建一个自定义组件来扩展DropDownList并重写dataProvider,selectedItem和commitProperties以防止清除selectedItem。