首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >绑定到AS3中的只读getter

绑定到AS3中的只读getter
EN

Stack Overflow用户
提问于 2009-09-15 14:56:29
回答 1查看 5K关注 0票数 17

考虑以下代码:

[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方法,并依赖于数字属性的设置器来获取数据;因此effectiveFromDate属性实际上是只读的。

数据绑定在effectiveFromDateJulian属性上工作;任何更新都可以正常工作,并正确地通知所有内容。但是当绑定到effectiveFromDate (仅限getter)属性时,我收到来自编译器的警告:

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

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

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

更新:来自Adobe文档:

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

使用只读属性作为数据绑定源的

可以自动使用由getter方法定义的只读属性(这意味着没有setter方法)作为数据绑定表达式的源。Flex在应用程序启动时执行一次数据绑定。

由于来自只读属性的数据绑定只在应用程序启动时出现一次,因此可以省略只读属性的Bindable metadata标记。

这对于常量值是有意义的,但在这种情况下,值是改变的,只是不能直接设置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-21 10:13:39

将只读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);
}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1427701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档