Flex: изменение состояний иногда не позволяет изменить отображение - PullRequest
0 голосов
/ 06 июля 2011

У меня есть веб-приложение flex3, которое отображает некоторые данные с сервера на той же странице, используя класс states .

Часть кода MXML выглядит так:

<mx:states>
    <mx:State name="Chart">
        <mx:AddChild position="lastChild">
            <ns2:ChartPanel right="10" top="182" left="10" bottom="10"></ns2:ChartPanel>
        </mx:AddChild>
    </mx:State>
    <mx:State name="List">
        <mx:AddChild position="lastChild">
            <ns2:TabularPanel right="10" top="182" left="10" bottom="10"></ns2:TabularPanel>
        </mx:AddChild>
    </mx:State>
    <mx:State name="ChatHistory">
        <mx:AddChild position="lastChild">
            <ns2:ChatHistoryPanel right="10" top="182" left="10" bottom="10"></ns2:ChatHistoryPanel>
        </mx:AddChild>
    </mx:State>
</mx:states>

ChartPanel использует AreaChart для отображения данных, в то время как TabularPanel и ChatHistoryPanel используют DataGrid.

Я переключаюсь между состояниями, устанавливая currentState:

protected function onCriteriaChange(event:Event):void
{
    if (criteria.selectedLabel == "Chat History")
    {
    refreshChatHistory();
        currentState = "ChatHistory";
    }
    else
    {
    UsersModel.unique = criteria.selectedIndex;
    if (btnChart.selected)
    {
                    UsersDataController.getNumParticipants();
            currentState = "Chart";
        }
        if (btnList.selected)
        {
            UsersDataController.getListOfParticipants();
            currentState == "List";
        }
    }
}

Исходное состояние - «График».

Вот проблема:

Переключение между состояниями работает нормально, за исключением случаев, когда я переключаюсь с 'ChatHistory' на 'List' Отображение не изменяется, но остается в содержимом ChatHistoryPanel.

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

Я использую: Flash Builder 4.5, Flex3, Windows 7, Chrome

Большое спасибо!

Офер

1 Ответ

2 голосов
/ 06 июля 2011

В вашем коде переключения состояния у вас есть следующее:

    if (btnList.selected)
    {
        UsersDataController.getListOfParticipants();
        currentState == "List"; //This checks equality instead of updating the property
    }

И вы должны изменить это на:

    if (btnList.selected)
    {
        UsersDataController.getListOfParticipants();
        currentState = "List"; //This effectively updates your currentState property
    }

Таким образом, это была просто опечатка: P

Приветствия

...