我遇到需要更新DropDownList的dataProvider和selectedItem的情况 按特定顺序。请参阅以下代码...
<s:DropDownList id="dropDownList"
dataProvider="{someDataProvider}"
selectedItem="{someSelectedItem}" />
在我的例子中,一些用户交互为可绑定变量“someDataProvider”和“someSelectedItem”生成新值。但是,当flex渲染DropDownList时,控件的选定值为空。
原因是DropDownList的“selectedItem”属性在“dataProvider”属性之前被绑定。需要首先绑定“dataProvider”以使“selectedItem”有效,这是因为新的“selectedItem”指向新的“dataProvider”。
我的问题是,以特定顺序更新可绑定属性的最佳做法是什么? 我想出了几种方法(例如使用valueCommit处理程序) ),但我想看看社区有什么要说的。
答案 0 :(得分:0)
我认为问题不在于形成数据提供者和所选项目。如果在将它们设置为List后它们在相同的Flash Player框架中形成,则它们不会立即应用。 Flex使用失效将实际操作推迟到下一帧。
要解决您的问题,请发布更多代码。如果您发布构成数据的代码,那将是件好事。
您的selectedItem可能不是您的数据提供者(某种克隆等)的成员吗?数据提供者中的对象类型是什么?
答案 1 :(得分:0)
这是一个长期困扰我的问题。这是有道理的,但不是。如果数据发生更改,您希望清除selectedItem,但前提是数据实际上不同或者不包含您选择的项目。
就个人而言,我只想创建一个自定义组件来扩展DropDownList并重写dataProvider,selectedItem和commitProperties以防止清除selectedItem。