2011-01-20 25 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基於http://code.google.com/p/rojored/source/detail?r=4b0a2dc267

如果我離開了的2個任務(ATask,BTask) '身份證',屬性這些任務沒有被注入並且爲空。

歐芹是否需要在對象上的ID來管理它們?

+0

我不知道,但如果你沒有得到你的答案在這裏,我建議您發佈的香菜論壇上,通常有良好的反饋有 – 2011-01-20 08:17:40

回答

2

這可能不是直觀的,但您使用的MXML語法在你的上下文創建一個 MyTask對象,而不是上下文本身創建和MyTask與任務的陣列,它分配給 屬性「任務」, 。這可能有助於 把它作爲:

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

當香菜內省myContext,它會找到myTasks,將對其進行處理。 它不會在 myTasks中找到嵌套在任務數組內的任務或bTask。

在Flex MXML,當你設置一個ID標籤它便成爲 類,它被實例化的屬性---在這種情況下,嵌套ATask和 BTask將成爲上下文的性質你正在宣佈他們。

所以會更喜歡:

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

...所以只有到那時,當香菜遍歷您的上下文的屬性, 將它找到嵌套的任務,以及和將能夠處理他們。

我知道MyTask沒有myTask id,但它不需要它,因爲它是上下文的直接屬性(所以自動生成的屬性名稱就足夠了)。如果你將TaskA和TaskB從MyTask定義中取出並將它們放在與MyTask相同的級別上,你會發現PM已經被正確地注入到它們當中,但是它們當然不會在隊列中工作你需要他們。

HTH, 加布裏埃爾

相關問題