从有关 Crux 的 Apache Royale 文档 来看,似乎可以将 bean 注入到添加到显示列表中的任何视图中。
然而,当我尝试在应用程序本身以外的视图中注入 bean 时,什么也没有发生,并且我已经从位于我的应用程序类中的事件处理程序手动设置了我的 bean(其中注入和事件处理的工作方式如下)预计)。
这是我尝试使用的视图示例:
public class MyView extends ScrollableSectionContent
{
[Bindable]
[Inject(source="myModel")]
public var myModel:MyModel;
public function MyView():void
{
super();
addEventListener("addedToStage", handleAddedToStageEvent);
}
[PostConstruct]
public function setUp():void
{
// This is never called
}
[EventHandler(event="MyEvent.EVENT_TYPE", properties="data")]
public function handleEvent(data:*):void
{
// Event is not handled here when fired
}
private function addedToStage(e:Event):void
{
// Get called whenever view is added to the display list
// but myModel remains null
}
}
这是我的应用程序中的 Crux 配置:
<beads>
<crux:JSStageEvents packageExclusionFilter="_default_"/>
<crux:Crux>
<crux:beanProviders>
<config:Beans/>
</crux:beanProviders>
<crux:config>
<crux:CruxConfig eventPackages="events.*"
viewPackages="views.*"/>
</crux:config>
</crux:Crux>
</beads>
要让注入在视图中工作,我应该注意什么?
您的 MyView 类是否位于顶级包“views”内?如果是,那么可能还有另一个我不清楚的原因导致它不起作用。但如果它不在该包中(位于顶级“视图”包或之下的某个位置),那么这可能就是原因。显示的 CruxConfig 仅指定“views”内的视图类作为要注入的有效视图类。如果您有其他包用于过滤视图类,您应该能够在此处添加逗号分隔的列表。