Рассмотрим следующий код:
[Bindable(event="ReportHeaderVO_effectiveFromDateJulian_updated")]
public function set effectiveFromDateJulian ( value:Number ) : void
{
_effectiveFromDateJulian = value;
dispatchEvent( new FlexEvent("ReportHeaderVO_effectiveFromDateJulian_updated") );
}
public function get effectiveFromDateJulian () : Number
{
return _effectiveFromDateJulian;
}
public function get effectiveFromDate () : Date
{
return DateUtil.convertJDEJulianToDate(_effectiveFromDateJulian);
}
Существуют установщик и получатель дляffectiveFromDateJulian, который является числовым представлением даты. Я предоставил отдельный метод получения, который извлекает то же значение, только преобразованное в правильную дату. Это только метод получения и он полагается на метод определения числового свойства для получения своих данных; таким образом, свойствоffectiveFromDate эффективно доступно только для чтения.
Привязка данных работает со свойствомffectiveFromDateJulian; любые обновления работают нормально и все правильно уведомляют. Но при привязке к свойствуffectiveFromDate (только для getter) компилятор получает предупреждение:
warning: unable to bind to property 'effectiveToDate' on class 'com.vo::ReportHeaderVO'
Есть ли способ сделать возможным привязку к этому свойству только для чтения? Я бы предположил, что мне придется отправить событие на сеттер, который влияет на свойство только для чтения, но я не знаю, как это будет выглядеть.
Это простой пример, вы можете представить себе свойство, доступное только для чтения, которое зависит от нескольких работающих сеттеров, и когда любой из этих сеттеров будет обновлен, свойство только для чтения также должно будет инициировать событие propertyChanged. Есть идеи? Пожалуйста, дайте мне знать, если мне нужно что-то уточнить.
Обновление:
Из документации Adobe здесь:
http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_8.html
Использование свойств только для чтения в качестве
источник для привязки данных
Вы можете автоматически использовать только для чтения
свойство, определенное методом получения,
что означает отсутствие метода установки, как
источник для выражения привязки данных.
Flex выполняет привязку данных один раз
когда приложение запускается.
Потому что привязка данных от
свойство только для чтения встречается только один раз в
приложение запускается, вы опускаете
[Привязываемый] тег метаданных для
свойство только для чтения.
И это имеет смысл для постоянных значений, но в этом случае значение действительно меняется, оно просто не устанавливается напрямую.