加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex – 绑定到AS3中的只读吸气剂

发布时间:2020-12-15 02:13:30 所属栏目:百科 来源:网络整理
导读:请考虑以下代码: [Bindable(event="ReportHeaderVO_effectiveFromDateJulian_updated")]public function set effectiveFromDateJulian ( value:Number ) : void{ _effectiveFromDateJulian = value; dispatchEvent( new FlexEvent("ReportHeaderVO_effectiv
请考虑以下代码:
[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);
}

有一个setter和一个getter for the EffectiveFromDateJulian是一个数字表示的日期。我提供了一个单独的吸气剂,它检索相同的值,只能转换成适当的日期。它只是一个吸气剂,依赖于数字属性的设置器来获取数据;所以effectiveFromDate属性实际上是只读的。

数据绑定工作在effectiveFromDateJulian属性;任何更新工作正常,并正确通知一切。但是当绑定到effectiveFromDate(getter only)属性时,我从编译器得到一个警告:

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

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.

这对于常数值是有意义的,但在这种情况下,值确实会改变,它不会直接设置。

解决方法

使readonly getter绑定并从原始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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读