2017-08-04 97 views
0

我有,我环路通过嵌套表对象的列表,而且我显示的物品反复使用嵌套的for循环播放模板。递归在游戏框架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

您可以创建一个单独的模板,采用列表[技巧]作为参数,使得在提供的列表和这些SkillObjects的孩子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> 

我一直无法对其进行测试