如何设置区域设置类和UI组件之间的绑定

时间:2011-10-05 16:09:27

标签: actionscript-3 flex binding

我试图弄清楚如何在我的Locale类和mxml文件之间正确设置绑定。

我的主要mxml文件包含:

<mx:Button id="TMP" label="{Locale.getLocaleString('title'}"/>

我想在按钮的标签中显示一个空字符串,直到加载语言环境文件。加载语言环境文件后,我想显示getLocaleString('title')返回的内容。

我认为这就是Binding的用途,但我认为我接近错了。

I know that I am not allowed to bind on a function。那么我是否需要允许访问(使用get函数)到我的_dictionary属性?为这样的东西设置Binding的标准方法是什么?

这是我目前的Locale课程。

public class Locale {

    private static var _dictionary:Dictionary = new Dictionary();

    public static function loadResources():void {...}

    public static function getLocaleString(featureID:String):String {
        if(_dictionary[featureID]==null){
            return "";
        }
        return _dictionary[featureID];
    }
}

1 个答案:

答案 0 :(得分:0)

这是我找到的解决方案:

  • 扩展EventDispatcher,使类Bindable并在加载完成时调度一个事件。 (doc
  • 将班级从静态课程转为单身人士(doc1doc2

这是我的最终代码:

[Bindable(event="loaded")]
public class LocaleSingleton extends EventDispatcher{

    private var _dictionary:Dictionary = new Dictionary();

    public function LocaleSingleton(){/* Do check to make sure it is a singleton*/}

    public function get instance(){...}

    public function loadResources():void {
    ...
    dispatchEvent(new Event("loaded")); // Method in EventDispatcher
    }

    public function getLocaleString(featureID:String):String {
    if(_dictionary[featureID]==null){
        return "";
    }
    return _dictionary[featureID];
    }
}