Flex Локализация: обновить значения DataProvider

голоса
4

У меня есть ToggleButtonBar с установкой DataProvider, как это:

   <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>

Для переключения языкового стандарта на китайский, у меня есть выпадающий с этим обработчиком:

resourceManager.localeChain = zh_CN;

Моя проблема заключается в том , что на локало изменения, в то время как метки для всех других элементов управления на экране динамически перезагружать для новой локализации, то dataProviderзначения не обновляются. Я могу вручную сбросить их в коде, но есть чистое решение?

Задан 10/12/2008 в 02:16
источник пользователем
На других языках...                            


4 ответов

голоса
3

Я бы абстрактный из данных для поставщика данных в привязываемому переменного, то просто сбросить поставщик данных при изменении местных жителей.

<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}" />

Тогда вы можете просто сказать,

myToggleButtonBar.dataProvider = myArray; 

после того, как вы поменяться с местными жителями, и он должен работать.

Отказ от ответственности, могут быть некоторые незначительные ошибки в моем коде, я, очевидно, я не в состоянии проверить это, и я не Flex Builder доступный прямо сейчас, чтобы даже проверить мой синтаксис, так что я надеюсь, что я не делал орфографические ошибки. Но это должно получить вас в футбольном поле.

Ответил 11/12/2008 в 19:29
источник пользователем

голоса
1

Вы должны держать «ежедневно», ... в вашем массиве и использовать labelFunction перевести метку. Когда ResourceManager отправляет событие изменения вы должны сделать combo.labelFunction = labelFunction

Ответил 09/11/2009 в 16:57
источник пользователем

голоса
1

Может быть, если вы сделаете геттер Bindable к пользовательскому событию для экс: «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; 
}

и в вашем инкубаторе «resourceManager.localeChain» вы посылаете:

dispatchEvent(new Event("langChange"));

и вы можете использовать следующим образом:

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

Я надеюсь, что это поможет вам.

Ответил 10/12/2008 в 12:52
источник пользователем

голоса
0

Хитрость заключается в том, чтобы добавить скобки вокруг каждого элемента в массиве DataProvider, таким образом он получает разобраны правильно. Обратите внимание, что это также правильно связывается с изменением локали в прогибается, не диспетчеризация пользовательских событий не требуется.

<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>
Ответил 03/02/2012 в 12:38
источник пользователем

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