Что вам нужно, потребуются некоторые скрипты, привязка не достаточно умна, чтобы понять, как справиться с этим самостоятельно.
Вы можете использовать класс BindingUtils
для определения привязок и использовать аргумент chain
метода bindProperty
, чтобы изменить способ поиска значений.
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/binding/utils/BindingUtils.html
Для combo.selectedItem
к model.labelIndex
связывания, вы можете указать цепочку как массив, в котором элементы определяют путь, где искать значения:
BindingUtils.bindProperty(model, 'labelIndex', combo, ['selectedItem', 'index']);
Это связывается с selectedItem
и передать стоимость товаров index
.
Другой путь немного сложнее и потребует использование функции геттера, которая захватывает объект из источника данных, на основе labelIndex
значения:
BindingUtils.bindProperty(combo, 'selectedItem', model, {
name: 'labelIndex',
getter: function(host:MyModel):Object
{
return LOGOS.source.filter(function(item:Object, index:int, array:Array):Boolean
{
return item.index === host.labelIndex;
})[0];
}
});
Это будет связываться с labelIndex
собственности, при изменении свойства будет вызываться функция getter
. Функция будет фильтровать источник данных на основе измененных моделей значений свойства labelIndex
и вернуть исходный объект с соответствующим значением свойства index
, которое, наконец, будет установлено для свойства combobox selectedItem
.
Ваше определение выпадающий будет, конечно, нужен id
для того, чтобы можно было выполнять с помощью сценария
<s:ComboBox id="combo" dataProvider="{LOGOS}" />
Обратите внимание, что нет никакой необходимости Forthe в @
в labelField
собственности, это используется только с XML-источников данных, где вам нужно для задания атрибута. Однако на самом деле вам не нужно указывать это вообще, поскольку label
является значением по умолчанию для свойства labelField
.
Но что, если 'index' не является последовательностью, например,' 1,2,5,17'? Будет ли ваш код работать с этим? – membersound
@membersound Я неправильно понял ваш вопрос, см. Мой обновленный ответ. –
Спасибо за ваше обновление. В любом случае это действительно сложный код для простого простого флажка с поданными данными.Я имею в виду, что для инфраструктуры пользовательского интерфейса обычно необходимо иметь какой-то объект данных в качестве источника данных для флажка, где выбор должен отображать только частичные свойства объекта, а ссылка на модель должна также просто использовать частичные свойства (в мой случай: индекс элемента, который будет сохраняться в БД, чтобы пользовательские настройки могли быть восстановлены при входе в систему). Разве нет более простого способа сделать это? – membersound