Я использую фреймворк Swiz с Flex. Я пытаюсь использовать тег mediate
с некоторой удачей, вот моя проблема:
public class Locale {
private static function onLoadSuccess(event:Event):void
{
// I have a break point here. I can tell that this code is being executed sucessfully
Swiz.dispatchEvent(new DynamicEvent(ConfigConstants.LOCALE_RESOURSE_LOADED));
}
}
В другом классе у меня есть этот код здесь:
public class AcordianPane {
...
[Mediate( event="localeResourseLoaded")]
public function onLocaleResourseLoaded( ...rest):void
{
this.label = Locale.getUiString("title.map.broadcast");
}
...
}
Код выше работает как положено. Возникает проблема при изменении тега Mediate
на константу:
public class AcordianPane {
...
[Mediate( event=ConfigConstants.LOCALE_RESOURSE_LOADED)]
public function onLocaleResourseLoaded( ...rest):void
{
// THIS IS NOT EXECUTED NOW!
this.label = Locale.getUiString("title.map.broadcast");
}
...
}
Кто-нибудь знает, почему это происходит? Для справки это мой класс ConfigConstants:
public class ConfigConstants {
public static const LOCALE_RESOURSE_LOADED:String = "localeResourseLoaded";
}
Примечание. Тег Mediate идентичен тегу EventListener, имя которого было изменено несколько раз назад. Я знаю, что теперь это устарело, но я не думаю, что есть какая-либо причина найти и заменить в нашей базе кода.
Редактировать 1 : Я только что попытался заменить EventHandler
на Mediate
, но возникает та же проблема.
Редактировать 2 : Вот соответствующая документация с веб-страницы Swiz.
Редактировать 3 : Я также пытался поместить событие в цитаты (спасибо @ Герхарду), например:
[EventHandler( event="ConfigConstants.LOCALE_RESOURSE_LOADED")]
public function onLocaleResourseLoaded( ...rest):void
{
this.label = Locale.getUiString("title.map.broadcast");
}
Но событие все еще не получено. Я думаю, что проблема может лежать в моем основном файле mxml, где я инициализирую Swiz:
<swiz:SwizConfig
strict="true" // set by a co-worker
mediateBubbledEvents="true" // set by a co-worker
viewPackages="com.sixtyfootersdude.views" // set by a co-worker
eventPackages="com.sixtyfootersdude.model" // <-- Just added!
beanLoaders="{ [ com.sixtyfootersdude.admin.AdminBeans ] }" /> // set by a co-worker
Также обратите внимание, что
AcordianPane
находится в com.sixtyfootersdude.views
Locale
находится в com.foxtrot.util
ConfigConstants
находится в com.sixtyfootersdude.model
Редактировать 4 : Последнее, что я попробовал, это:
[EventHandler( event="com.sixtyfootersdude.model.ConfigConstants.LOCALE_RESOURSE_LOADED")]
public function onLocaleResourseLoaded( ...rest):void{
this.label = Locale.getUiString("title.map.broadcast");
}
И
<swiz:SwizConfig
strict="true"
mediateBubbledEvents="true"
viewPackages="com.sixtyfootersdude.views"
beanLoaders="{ [ com.sixtyfootersdude.admin.AdminBeans ] }" />