0

MXML スニペット -

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

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

仕事 -

   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」を省略した場合、これらのタスクのプロパティは挿入されず、null になります。

パセリは、オブジェクトを管理するためにオブジェクトの ID を必要としますか?

4

1 に答える 1

2

それほど直感的ではないかもしれませんが、使用しているMXML構文は、コンテキスト内にMyTaskオブジェクトを作成し、コンテキスト自体ではなく、MyTaskのプロパティ「tasks」に割り当てるタスクを作成して配列します。それを次のように考えると役立つかもしれません:

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

パセリがmyContextをイントロスペクトすると、myTasksが検出され、処理されます。myTasksのtasks配列内にネストされているaTaskまたはbTaskは見つかりません。

Flex MXMLでは、IDをタグに設定すると、それがインスタンス化されるクラスのプロパティになります---この場合、ネストされたATaskとBTaskは、それらを宣言するコンテキストのプロパティになります。

したがって、次のようになります。

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

...その場合にのみ、Parsleyがコンテキストのプロパティをループすると、ネストされたタスクも検出され、それらを処理できるようになります。

MyTaskにはそのmyTaskIDがないことは知っていますが、コンテキストの直接のプロパティであるため、必要ありません(したがって、自動生成されたプロパティ名で十分です)。TaskAとTaskBをMyTask定義から取り出して、MyTaskと同じレベルに配置すると、PMが適切に挿入されていることがわかりますが、もちろん、これらはキューで機能しません。あなたはそれらを必要としています。

HTH、ガブリエル

于 2011-03-06T05:17:22.267 に答える