gpt4 book ai didi

apache-flex - 绑定(bind)到 AS3 中的只读 getter

转载 作者:行者123 更新时间:2023-12-03 12:51:40 25 4
gpt4 key购买 nike

考虑以下代码:

[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 属性实际上是只读的。

数据绑定(bind)适用于 EffectiveFromDateJulian 属性;任何更新都可以正常工作并正确通知一切。但是,当绑定(bind)到 EffectiveFromDate(仅限 getter)属性时,我会收到来自编译器的警告:
warning: unable to bind to property 'effectiveToDate' on class 'com.vo::ReportHeaderVO'

有没有办法可以绑定(bind)到这个只读属性?我假设我必须在 setter 上调度一个影响只读属性的事件,但我不知道那会是什么样子。

这是一个简单的示例,您可以想象一个依赖多个 setter 来运行的只读属性,并且当任何这些 setter 更新时,只读属性也需要触发 propertyChanged 事件。有任何想法吗?如果我需要澄清任何事情,请告诉我。

更新:
从此处的 Adob​​e 文档中:

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

Using read-only properties as the source for data binding

You can automatically use a read-only property defined by a getter method, which means no setter method, as the source for a data-binding expression. Flex performs the data binding once when the application starts.

Because the data binding from a read-only property occurs only once at application start up, you omit the [Bindable] metadata tag for the read-only property.



这对于常量值是有意义的,但在这种情况下,值确实发生了变化,只是没有直接设置。

最佳答案

使只读 getter 可绑定(bind),并从原始 setter 方法调度相应的事件。

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

关于apache-flex - 绑定(bind)到 AS3 中的只读 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com