2017-08-04 15 views
0

私は、ネストされたリストを持つオブジェクトのリストをループするプレイテンプレートを持っており、ネストされたforループを使って繰り返しアイテムを表示しています。Playフレームワークでの再帰2.5.X

-skillListは、[スキル]

-Skillが

-skillObject.getChildrenList(モデルで定義されたオブジェクトですが)リストを返すリストである私がしたい何[スキル]

doはこれを表示することができますが、mylistの入れ子のレベルが変更された場合、テンプレート全体を変更する必要はありません。再帰的な方法でこれを行う方法はありますか?すべての答えを事前に

<div class="custom-dd dd dd-nodrag" id="nestable_list_1"> 
<ol class="dd-list"> 
@for(skill <- skillList) { 
    <li class="dd-item"> 
     <div class="dd-handle dd-nodrag row"> 
      <span class="dd-nodrag" id="[email protected]()"> @skill.getLabel() </span> 
     </div> 

    <ol class="dd-list"> 
    @for((child, indexChild) <- skill.getChildrenList().zipWithIndex) { 
     <li class="dd-item" data-id="@indexChild"> 
      <div class="dd-handle dd-nodrag row"> 
       <span id="[email protected]()"> @child.getLabel() </span> 
      </div> 

      <ol class="dd-list"> 
      @for((grandChild, indexGrandChild) <- child.getChildrenList().zipWithIndex) { 
       <li class="dd-item" data-id="@indexGrandChild"> 
        <div class="dd-handle dd-nodrag row"> 
         <span id="[email protected]()"> @grandChild.getLabel() </span> 
        </div> 

       </li> 
      } 


      <div class="text-left addNew" id="[email protected]"> 
       <span> 
        <button class="btn btn-icon w-xs plusBtn 
        btn-primary waves-effect waves-light toggleButton" data-toggle="modal" 
        data-target="#custom-width-modal"> <i class="fa fa-plus" aria-hidden="true"></i> 
        </button> 
       </span> 
      </div> 
      @(index = index + 1) 

      </ol> 
      </li> 
    } 

    </ol> 
    </li> 
} 

</ol> 

感謝。

答えて

1

引数としてList [Skill]をとり、提供されたリストとこれらのSkillObjectの子でSkillObjectsをレンダリングする別個のテンプレートを作成できます。その後、メインページテンプレートの最初のネストレベルでそのテンプレートを使用します。次のように -

SkillTemplate.scala.html

@(skills: List[Skill])() 

<ol class="dd-list"> 
    @for((child, indexChild) <- skills.zipWithIndex) { 
     <li class="dd-item" data-id="@indexChild"> 
      <div class="dd-handle dd-nodrag row"> 
       <span id="[email protected]()"> @child.getLabel() </span> 
      </div> 
      @SkillTemplate(child.getChildrenList()) 
      <div class="text-left addNew" id="[email protected]"> 
       <span> 
        <button class="btn btn-icon w-xs plusBtn 
        btn-primary waves-effect waves-light toggleButton" data-toggle="modal" 
        data-target="#custom-width-modal"> <i class="fa fa-plus" aria-hidden="true"></i> 
        </button> 
       </span> 
      </div> 
      @(index = index + 1) 
     </li> 
    } 
</ol> 

を、私はそれをテストすることができていない

関連する問題