2011-01-20 6 views
0

MXML은 니펫을 -다음 flex/parsley 코드에서 'id'를 제공하지 않으면 왜 주입이 실패합니까?

<startup:MyTasks autoStart="false" > 
     <startup:tasks> 
     <startup:ATask id="aTask" /> 
     <startup:BTask id="bTask" />   
     </startup:tasks> 
    </startup:MyTasks> 

    <Object type="{ MyViewPM }" id="someID"/> 

ATask -

public class ATask extends Task 
    { 
     [Inject] 
     public var viewPM : MyViewPM; 
    } 

MyTasks 나는이 개 작업 (ATask, BTask)의 'ID를'알아두면

http://code.google.com/p/rojored/source/detail?r=4b0a2dc267을 기반으로, 속성을 이러한 작업 중 dont 주입 및 null입니다.

파슬리는 개체를 관리하기 위해 개체에 ID가 필요합니까?

+0

나도 몰라하지만 당신은 여기에 답을하지 않은 경우, 나는 보통 좋은 의견이있다, 당신은 파슬리 포럼에 게시 제안 –

답변

2

이되지 않을 수도 직관적하지만 당신이 사용하고있는 MXML 구문은 컨텍스트에서 MyTask 객체를 생성하지 문맥 자체의 생성과 MyTask의는 속성에 을 할당 작업에 배열 "작업" . 파슬리는 myContext를 내부적으로 점검 때, myTasks을 발견하고 그것을 처리 할

myContext.myTasks.tasks = [aTask, bTask]; 

: 그것은 이로 생각하는 데 도움이 될 수 있습니다. myTasks에서 tasks 배열 안에 중첩 된 Task 또는 bTask를 찾지 못합니다. 당신이 태그에 ID를 설정할 때

플렉스 MXML에서

가, 그 다음이 경우 ---가 인스턴스화되고있는 클래스의 소유가 중첩 된 ATask 및 BTask 컨텍스트의 속성이 될 것이다 당신이 선언하고있는 곳. 파슬리이 컨텍스트의 속성을 통해 루프 할 때, 는 그것뿐만 아니라 중첩 작업을 발견하고 처리 할 수 ​​있도록 그런 다음에야, ...

myContext.myTasks.tasks = [aTask, bTask]; 
myContext.aTask = aTask; 
myContext.bTask = bTask; 

:

은 그래서 더 같이 될 것입니다 그들.

MyTask에는 myTask ID가 없지만 컨텍스트의 직접 속성이므로 필요하지 않습니다 (자동 생성 된 속성 이름으로 충분 함). TaskA와 TaskB를 MyTask 정의에서 꺼내어 MyTask와 같은 레벨에두면 PM이 제대로 삽입되었는지 알 수 있지만 물론 대기열에서 작업하지 않습니다. 너는 그들을 필요로한다.

HTH, 가브리엘

관련 문제