Как настроить привязку между классом языкового стандарта и компонентом пользовательского интерфейса - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь выяснить, как правильно настроить привязку между моим классом Locale и файлом mxml.

Мой основной файл mxml содержит:

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

Я хотел бы отобразитьпустая строка в метке кнопки, пока не загрузится файл локали.После загрузки файла локали я хотел бы отобразить то, что возвращает getLocaleString('title').

Я думаю, что это то, для чего предназначен Binding, однако я думаю, что я подхожу к этому неправильно.

Я знаю, что мне не разрешено связываться с функцией .Так что мне нужно разрешить доступ (используя функцию 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 голосов
/ 06 октября 2011

Это решение, которое я нашел:

  • Расширьте EventDispatcher, сделайте класс Bindable и отправьте событие по завершении загрузки.( doc )
  • Превратить класс из статического класса в одиночный ( doc1 , doc2 )

Вот мой окончательный код:

[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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...