我正在使用带有 Flex 的 Swiz 框架。我想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:我也尝试将事件放在引号中(感谢@Gerhard's),如下所示:
[EventHandler( event="ConfigConstants.LOCALE_RESOURSE_LOADED")]
public function onLocaleResourseLoaded( ...rest):void
{
this.label = Locale.getUiString("title.map.broadcast");
}
但该事件仍未收到。我认为问题可能出在我初始化 Swiz 的主 mxml 文件中:
<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 ] }" />