【问题标题】:How to increment a variable in template without loop -- Play 2.1.1, Java如何在没有循环的情况下增加模板中的变量——Play 2.1.1,Java
【发布时间】:2013-09-17 04:26:19
【问题描述】:

我想为 HTML 列表生成 ID。 该列表是从数据库动态生成的。 我不能使用 for 循环或 list.zipWithIndex 函数,因为我的逻辑已经包含一些用于生成列表的循环,其中计数器也需要递增。我也尝试使用定义函数,但它不允许像这样重新分配值:@{id = id + 1}

完成 ID 生成的最佳方法是什么?

这是模板的一部分(uniqueId需要用整数代替):

  <div id="tree">
    <ul>
        <li id="uniqueId">
            <a class="dashboard" href="/">Dashboard</a>
        </li>
        <li id="uniqueId">
            <b>Products</b>
            <ul id="uniqueId">
            @for(cat <- Application.allCategories()) { 
              <li id="uniqueId">
                <a class="name" href="@routes.Categories.getd(cat.id).url">@cat.name</a>
              <ul>
                @for(prod <- Application.allProducts()) {
                <li id="uniqueId">
                    <a class="name" href="@routes.Product.getById(prod.id).url">@prod.name</a>
                </li>   
@*more code and the closing tags...*@

【问题讨论】:

    标签: scala playframework-2.0 playframework-2.1 scala-template


    【解决方案1】:

    仅使用 ... 对象的 id 前缀使其唯一,例如第一个列表:

    @for(cat <- Application.allCategories()) { 
          <li id="cat_@cat.id">
    

    第二次:

    @for(prod <- Application.allProducts()) {
          <li id="prod_@prod.id">
    

    或者如果相同的产品可以显示在多个类别中,则也可以使用 cat.id 作为前缀:

    @for(cat <- Application.allCategories()) { 
        <li id="cat_@cat.id">
        @for(prod <- Application.allProducts()) {
            <li id="prod_@(cat.id)_@(prod.id)">
    

    【讨论】:

    • 谢谢,不知道为什么我没有考虑到这一点;-) 把 cat_ 或 prod_ 放在每个 id 之前听起来不错!
    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多