代码之家  ›  专栏  ›  技术社区  ›  Ozerioss Smith

Play framework 2.5.X中的递归

  •  0
  • Ozerioss Smith  · 技术社区  · 7 年前

    -skillList是一个列表[技能]

    -技能是在模型中定义的对象

    -skillObject。getChildrenList()返回列表[技能]

    我想做的是能够显示这一点,但使用某种类型的递归,这样如果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="content_@skill.getCleanUri()"> @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="content_@child.getCleanUri()"> @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="content_@grandChild.getCleanUri()"> @grandChild.getLabel() </span>
                        </div>
    
                    </li>
                }
    
    
                <div class="text-left addNew" id="meta-@index"> 
                    <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 回复  |  直到 7 年前
        1
  •  1
  •   Tarun Bansal    7 年前

    您可以创建一个单独的模板,将List[Skill]作为参数,并在提供的列表中呈现skillobject和这些skillobject的子对象。然后在主页模板的第一个嵌套级别使用该模板。像下面这样-

    @(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="content_@child.getCleanUri()"> @child.getLabel() </span>
                </div>
                @SkillTemplate(child.getChildrenList())
                <div class="text-left addNew" id="meta-@index"> 
                  <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>
    

    我无法测试它