Je ne parviens pas à lier la propriété publique selectedIndex d'une étincelle DropDownList à sa source d'origine dans le modèle de présentation de la vue. Pour répliquer ce problème avec le moins de lignes possible, j'ai deux vues et un modèle de présentation. Le code suit.Impossible de lier l'élément selectedIndex d'une DropDownList au membre selectedIndex d'une classe Bindable
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600"
xmlns:views="com.blah.views.*">
<views:DropDownListView/>
</s:Application>
DropDownListView.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<fx:Script>
<![CDATA[
import com.blah.presentationmodels.DropDownListPresentationModel;
[Bindable]
private var pm:DropDownListPresentationModel = new DropDownListPresentationModel();
]]>
</fx:Script>
<s:DropDownList id="myDropDownList"
dataProvider="{pm.list}"
selectedIndex="{pm.selectedIndex}"
valueCommit="{pm.selectionChanged()}"/>
</s:Group>
DropDownListPresentationModel.as
package com.blah.presentationmodels
{
import mx.collections.ArrayCollection;
[Bindable]
public class DropDownListPresentationModel
{
public var selectedIndex:int = -1;
public var list:ArrayCollection = new ArrayCollection();
public function DropDownListPresentationModel()
{
list.addItem("Load of Bread");
list.addItem("Stick of Butter");
list.addItem("Carton of Milk");
}
public function selectionChanged():void
{
var newSelectedIndex:int = selectedIndex; // always -1
}
}
}
Débogage de l'application Je trouve que selectedIndex dans le modèle de présentation reste toujours à la valeur par défaut assignée quel que soit l'élément que j'ai sélectionné dans DropDownList. Pour l'exemple de code ci-dessus c'est -1.
Comment lier l'élément selectedIndex dans le modèle de présentation afin qu'il soit mis à jour de manière appropriée lorsque l'élément sélectionné DropDownList change?