flex actionscript-3 data-binding binding properties

flex - Enlace a un getter de solo lectura en AS3



actionscript-3 data-binding (1)

Haga que el getter de solo lectura sea Bindable y envíe el evento correspondiente desde el método del setter original.

[Bindable(event="ReportHeaderVO_effectiveFromDateJulian_updated")] public function set effectiveFromDateJulian ( value:Number ) : void { _effectiveFromDateJulian = value; dispatchEvent( new FlexEvent("ReportHeaderVO_effectiveFromDateJulian_updated") ); dispatchEvent( new FlexEvent("ReportHeaderVO_effectiveFromDate_updated") ); } [Bindable(event="ReportHeaderVO_effectiveFromDate_updated")] public function get effectiveFromDate (date:Date) : Date { return DateUtil.convertJDEJulianToDate(_effectiveFromDateJulian); }

Considere el siguiente código:

[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); }

Hay un setter y un getter para EffectifromateJulian, que es una representación numérica de la fecha. He proporcionado un captador independiente que recupera el mismo valor, y que solo se convirtió en una fecha adecuada. Sin embargo, es solo un captador y se basa en el configurador para que la propiedad numérica obtenga sus datos; por lo tanto, la propiedad effectFromDate es efectivamente de solo lectura.

El enlace de datos funciona en la propiedad effectFromDateJulian; Cualquier actualización funciona bien y notifica todo correctamente. Pero al enlazar con la propiedad effectFromDate (solo getter), recibo una advertencia del compilador:

warning: unable to bind to property ''effectiveToDate'' on class ''com.vo::ReportHeaderVO''

¿Hay alguna manera de hacer posible la vinculación a esta propiedad de solo lectura? Asumiría que tendría que enviar un evento en el setter que afecte la propiedad de solo lectura, pero no sé cómo se vería eso.

Este es un ejemplo simple, podría imaginar una propiedad de solo lectura que depende de la configuración de varios configuradores y, cuando se actualice cualquiera de ellos, la propiedad de solo lectura también deberá activar un evento propertyChanged. ¿Algunas ideas? Por favor, hágamelo saber si necesito aclarar algo.

Actualización: Desde la documentación de Adobe aquí:

http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_8.html

Uso de propiedades de solo lectura como fuente de enlace de datos

Puede usar automáticamente una propiedad de solo lectura definida por un método getter, lo que significa que no hay un método de establecimiento, como la fuente de una expresión de enlace de datos. Flex realiza el enlace de datos una vez que se inicia la aplicación.

Debido a que el enlace de datos de una propiedad de solo lectura ocurre solo una vez al inicio de la aplicación, omite la etiqueta de metadatos [Bindable] para la propiedad de solo lectura.

Y esto tiene sentido para los valores constantes, pero en este caso el valor cambia, simplemente no se establece directamente.