【发布时间】:2010-11-28 12:01:23
【问题描述】:
考虑以下代码:
[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);
}
EffectiveFromDateJulian 有一个 setter 和一个 getter,它是日期的数字表示。我提供了一个单独的 getter,它检索相同的值,只转换为正确的日期。它只是一个 getter,并且依赖于数字属性的 setter 来获取其数据;所以 EffectiveFromDate 属性实际上是只读的。
数据绑定适用于 EffectiveFromDateJulian 属性;任何更新都可以正常工作并正确通知一切。但是当绑定到 EffectiveFromDate(仅限 getter)属性时,我会收到来自编译器的警告:
warning: unable to bind to property 'effectiveToDate' on class 'com.vo::ReportHeaderVO'
有没有办法可以绑定到这个只读属性?我假设我必须在设置器上调度一个影响只读属性的事件,但我不知道那会是什么样子。
这是一个简单的示例,您可以想象一个依赖多个 setter 来运行的只读属性,当任何这些 setter 更新时,只读属性也需要触发 propertyChanged 事件。有任何想法吗?如果我需要澄清任何事情,请告诉我。
更新: 来自此处的 Adobe 文档:
http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_8.html
使用只读属性作为 数据绑定源
您可以自动使用只读 由 getter 方法定义的属性, 这意味着没有 setter 方法,因为 数据绑定表达式的源。 Flex 执行一次数据绑定 当应用程序启动时。
因为数据绑定来自 只读属性只出现一次 应用程序启动,你省略 [可绑定] 元数据标签 只读属性。
这对于常量值是有意义的,但在这种情况下,值确实会发生变化,只是不会直接设置。
【问题讨论】:
标签: apache-flex actionscript-3 data-binding binding properties