Как я могу создать комбинированное поле с учетом стоимости в Flex 4? - PullRequest
1 голос
/ 31 марта 2011

Комбо-боксы во Flex действительно неудобны в использовании, если в моем опыте есть объекты, к которым обращаются свойства.В Flex 3.5 у нас было рабочее расширение поля со списком, которое заполняло бы свойство selectedValue (и позволяло бы изменять selectedIndex на то же самое).

Вот краткий пример того, как использование одного из них выглядит:

<c:ValueComboBox valueField="country_code">
    <mx:Script>
        <![CDATA[
        public function get selectedCountry(): String {
            return this.selectedValue; // This property is added by ValueComboBox
        }

        public function set selectedCountry(v: String): void {
            this.selectedValue = v;
        }
        ]]>
    </mx:Script>
    <c:dataprovider>
        <mx:ArrayCollection>
            <mx:Object label="Canada" country_code="ca"/>
            <!-- ... -->
        </mx:ArrayCollection>
    </c:dataprovider>
</c:ValueComboBox>

Однако во Flex 4 это перестало работать. Происходит то, что наш существующий компонент претерпел изменения благодаря переопределению функции set selectedIndex(), которая больше не вызывается при изменении выбранного индекса поля со списком(wtf?).

Существует ли работающая реализация комбинированного списка с учетом значений для Flex 4?

Для информации, вот класс со списком базовых значений.https://gist.github.com/5639c7b2439b03748e2e

1 Ответ

2 голосов
/ 01 апреля 2011

Flex 4 ComboBox теперь использует свойство userProposedSelectedIndex для хранения временного значения выбранного индекса до закрытия ComboBox. И тогда свойство selectedIndex устанавливается не с selectedIndex, а с вызовом метода setSelectedIndex со следующей сигнатурой:

mx_internal function setSelectedIndex(value:int, dispatchChangeEvent:Boolean = false):void

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

Надеюсь, это поможет.

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