2011-04-20 40 views
0

我有一種情況,我需要以特定的順序更新DropDownList的dataProvider和selectedItem 。請看下面的代碼...如何按特定順序更新多個可綁定屬性? (Flex)

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

在我的情況下,一些用戶交互產生的綁定變量「someDataProvider」新的價值觀,和「someSelectedItem」。但是,當flex呈現DropDownList時,控件的選定值爲空。

原因是DropDownList的「selectedItem」屬性在「dataProvider」屬性之前被綁定。需要首先爲「selectedItem」綁定「dataProvider」才能生效,這是因爲新的「selectedItem」指向了新的「dataProvider」。

我的問題是,以特定順序更新可綁定屬性的最佳做法是什麼?我想出了一些方法(例如使用valueCommit處理函數),但我想知道社區不得不說什麼。

+0

我的衝動是說;不要使用綁定。需要時手動更新屬性。 – JeffryHouser 2011-04-20 20:16:28

回答

0

我不認爲問題在於形成數據提供者和選定的項目。如果它們在設置爲List之後在相同的Flash Player框架中形成,則它們不會立即應用。 Flex使用無效來推遲到下一幀的實際操作。

要解決您的問題,請發佈更多的代碼。如果您發佈形成數據的代碼,這將是一件好事。

您的selectedItem是否可能不是您的數據提供者(某種克隆或其他)的成員?數據提供者中的哪些類型的對象?

0

這是一個長期困擾我的問題。這是有道理的,但沒有。如果數據發生變化,您希望清除selectedItem,但僅當數據實際上不同或不包含您選擇的項目時。

個人而言,我只是創建一個擴展DropDownList的自定義組件,並重寫dataProvider,selectedItem和commitProperties以防止清除selectedItem。