私有财产的名称[Binable]生成

时间:2013-02-03 21:20:24

标签: flex data-binding actionscript

我的ActionScript类中有一个可绑定的公共属性,我想访问由[Bindable]标记生成的私有var。

例如,如果我声明:

[Bindable] public var yummyTime:String = "abcdefghij";

在运行时,它将值存储在名为_719695190yummyTime的变量中。有谁知道我怎么能预测这个名字?

2 个答案:

答案 0 :(得分:1)

即使你可以预测这个名字;您将无法在编译时访问它,因为您将获得未定义变量的编译器错误。你为什么需要访问它?

我怀疑无论你想做什么都可以通过将公共变量定义扩展为定义了Bindable事件的get / set方法来实现。像这样:

private var _yummyTime : String = 'abcdefghij'
[Bindable(event='yummyTimeChanged'] 
public function get yummyTime():String{
 return _yummyTime;
}

public function set yummyTime(value:String):void{
 _yummyTime = value;
 dispatchEvent(new Event('yummyTimeChanged'));
}

然后在组件内部,您将拥有私有变量_yummyTime和公共变量yummyTime。

答案 1 :(得分:0)

此:

[Bindable] public var yummyTime:String;

与写作相同:

 private var _yummyTime:String;
 [Bindable]
 public function get yummyTime():String
 {
     return _yummyTime;
 }   
 public function set yummyTime(value:String):void
 {
     _yummyTime = value;
 }

在第二段代码中,你已经明确地写出了私有变量的getter和setter。

另请注意,[Bindable]标签在setter函数中添加了特殊检查,如下所示:

    private var _yummyTime:String;
    [Bindable(event="yummyTimeChange")]
    public function get yummyTime():String
    {
        return _yummyTime;
    }

    public function set yummyTime(value:String):void
    {
        if( _yummyTime !== value)
        {
            _yummyTime = value;
            dispatchEvent(new Event("yummyTimeChange"));
        }
    }

如果你不想检查 if(_yummyTime!== value),你可以在[Bindable]标签中添加一个自定义事件名称,就像我给出的最后一个例子一样不写出支票。