Flex Lokalisierung: refresh DataProvider- Werte

stimmen
4

Ich habe einen ToggleButtonBar mit einem Datenprovider-Setup wie folgt aus:

   <mx:ToggleButtonBar itemClick=clickHandler(event); selectedIndex=0>
    <mx:dataProvider>
        <mx:String>{resourceManager.getString('dashboard','daily')}</mx:String>
        <mx:String>{resourceManager.getString('dashboard','monthly')}</mx:String>
        <mx:String>{resourceManager.getString('dashboard','quarterly')}</mx:String>
        <mx:String>{resourceManager.getString('dashboard','yearly')}</mx:String>
    </mx:dataProvider>
   </mx:ToggleButtonBar>

So wechseln Sie locale auf Chinesisch, ich habe eine Combobox mit diesem Handler:

resourceManager.localeChain = zh_CN;

Mein Problem ist , dass auf locale ändern, während die Etiketten für alle anderen Steuerelemente auf dem Bildschirm dynamisch für das neue Gebietsschema neu zu laden, die dataProviderWerte aktualisieren nicht. Ich kann sie in Code manuell zurückgesetzt, aber gibt es eine saubere Lösung?

Veröffentlicht am 10/12/2008 um 02:16
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
1

Vielleicht, wenn Sie einen Getter bindable zu einem benutzerdefinierten Ereignisse für ex machen: „langChange“

[Bindable("langChange")]
public function get dataProviderToggleB():ArrayCollection
{
    var arr :ArrayCollection = new ArrayCollection();

    arr.addItem(resourceManager.getString('dashboard','daily'));
    arr.addItem(resourceManager.getString('dashboard','monthly'));

    return arr; 
}

und in Ihrem „resourceManager.localeChain“ Setter Sie Versandfertig:

dispatchEvent(new Event("langChange"));

und Sie können wie folgt verwendet:

<mx:ToggleButtonBar dataProvider="{dataProviderToggleB} itemClick="clickHandler(event);" selectedIndex="0">

Ich hoffe, das Ihnen helfen würde.

Beantwortet am 10/12/2008 um 12:52
quelle vom benutzer

stimmen
3

Ich würde für Ihre Daten-Provider in eine bindungsfähige Variable aus den Daten abstrakt, dann zurückgesetzt nur den Datenanbieter, wenn Sie Einheimischer ändern.

<mx:Script>
    <![CDATA[
        [Bindable]
        myArray:Array = new Array(
              [resourceManager.getString('dashboard','daily')]
            , [resourceManager.getString('dashboard','monthly')]
            , [{resourceManager.getString('dashboard','quarterly')]
            , [resourceManager.getString('dashboard','yearly')]);

    ]]>
</mx:Script>


<mx:ToggleButtonBar itemClick="clickHandler(event);" 
selectedIndex="0" id="myToggleButtonBar" dataprovider="{myArray}" />

Dann können Sie einfach sagen

myToggleButtonBar.dataProvider = myArray; 

nachdem Sie die Einheimischen austauschen und es sollte funktionieren.

Haftungsausschluss, kann es einige kleinere Fehler in meinem Code, ich bin offensichtlich nicht in der Lage, es zu testen und ich habe nicht Flex Builder verfügbar jetzt sogar meine Syntax zu überprüfen, so dass ich hoffe, dass ich keine Rechtschreibfehler gemacht hat. Aber das sollten Sie im Baseballstadion bekommen.

Beantwortet am 11/12/2008 um 19:29
quelle vom benutzer

stimmen
1

Sie sollen halten ‚täglich‘, ... in Ihrem Array und eine labelfunction verwenden, um das Etikett zu übersetzen. Wenn der Resourcemanager ein Änderungsereignis sendet sollten Sie eine combo.labelFunction = labelfunction tun

Beantwortet am 09/11/2009 um 16:57
quelle vom benutzer

stimmen
0

Der Trick ist Klammer hinzuzufügen um jedes Element in dem Datenprovider-Array, das so, wie es korrekt analysiert wird. Beachten Sie, dass dies auch richtig locale Veränderungen in flex bindet, wird keine benutzerdefinierte Ereignis Disposition benötigt.

<mx:ToggleButtonBar itemClick="clickHandler(event);" selectedIndex="0" 
  dataProvider="{[ (resourceManager.getString('dashboard','daily')),
                   (resourceManager.getString('dashboard','monthly')),
                   (resourceManager.getString('dashboard','quarterly')), 
                   (resourceManager.getString('dashboard','yearly')) ]}">
</mx:ToggleButtonBar>
Beantwortet am 03/02/2012 um 12:38
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more