Apache flex FastInject未检测到欧芹中的objectId
我最近刚开始使用欧芹,我遇到了这个问题。问题是我的项目中有一个自定义组件,它由Parsley“配置”,并有一段代码,如下所示:Apache flex FastInject未检测到欧芹中的objectId,apache-flex,dependency-injection,inject,parsley,Apache Flex,Dependency Injection,Inject,Parsley,我最近刚开始使用欧芹,我遇到了这个问题。问题是我的项目中有一个自定义组件,它由Parsley“配置”,并有一段代码,如下所示: <fx:Script> <![CDATA[ ... [Inject(id="dateFormatter")] [Bindable] public var dateFormatter:DateFormatter; ... ]]> </fx:Scri
<fx:Script>
<![CDATA[
...
[Inject(id="dateFormatter")]
[Bindable] public var dateFormatter:DateFormatter;
...
]]>
</fx:Script>
<fx:Declarations>
<parsley:Configure />
</fx:Declarations>
从我在线搜索时发现的情况来看,FastInject
中的objectId
与[Inject(id=“dateFormatter”)]
相同。这是我的建议。如果我错了,请纠正我:)
但当我使用它时,我遇到了以下错误:
错误:注册了多个mx.formatters::DateFormatter类型的对象
这是否意味着正在注入的属性的ID没有被提取?当我配置整个组件并使用Inject
meta标记时,它可以正常工作,但我不想配置整个组件
有人能提出解决方案吗?如果上下文中声明的对象具有id,则FastInject by id有效
上下文配置
组件中的FastInject
这对我来说很有用。当您从类A继承B并希望在指定类型的同时按id注入这两个元素时,欧芹FastInject会感到困惑
您只需要使用FastInject的objectId/type属性之一谢谢dgesang
。。这对我有用:)!!我的错误是我在声明中同时使用了objectId
和type
!!嘿,杰迪斯。。谢谢您的回复,但是您能告诉我在什么情况下我应该使用objectID
和type
?如果可能的话,最好按类型进行注射。这样,您就不必编写任何objectId名称,而且代码更干净。只有在欧芹上下文中定义了多个相同类型的类(也可以是子类的一种情况)时,才应该使用id注入。
<parsley:FastInject objectId="dateFormatter" property="dateFormatter" type="{DateFormatter}" />
<fx:Declarations>
<foo:FooBar1 />
<foo:FooBar2 id="fooBar2" />
</fx:Declarations>
<fx:Declarations>
<parsley:FastInject injectionComplete="handlerInjectComplete(event)">
<parsley:Inject property="foobar1" type="{FooBar1}" />
<parsley:Inject property="foobar2" objectId="fooBar2"/>
</parsley:FastInject>
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
public var foobar1:FooBar1;
[Bindable]
public var foobar2:FooBar2;
protected function handlerInjectComplete(event:Event):void
{
if(foobar1) trace("foobar1 available");
if(foobar2) trace("foobar2 available");
}
]]>
</fx:Script>