2017-11-20 14 views
0

私はオブジェクトのリストをループしてテーブルに表示しようとしていますが、私は各オブジェクトの計算をしたいと思います。私はforループ内の複数の場所でその変数を使用できるようにしたいと思います。
forループ内で動的変数を定義するための適切な構文が見つかりません。

私が計算したい値は、進行状況バーのパーセントです。私はこのコンパイル・エラーが発生しますPlay Framework、Forループ内の動的文

<table class="table table-striped table-bordered table-hover" id="dataTables-example"> 
      <thead> 
       <tr> 
        <th scope="col">#</th> 
        <th scope="col">Job (id/name)</th> 
        <th scope="col">Place</th> 
        <th scope="col">Last Name</th> 
        <th scope="col">Progress</th> 
       </tr> 
      </thead> 
      <tbody> 
       @for((job,index) <- jobList.zipWithIndex) { 
        // 
        // this is where i'm stuck 
        // 
        @progressPercentage() = @{ 
         job.getTotalTaskCount/job.getFinishedTaskCount.toDouble 
        } 
        <tr> 
         <th scope="row">@index</th> 
         <td> 
          <div> 
           <p><strong>@job.getJobName</strong></p> 
           <span><a href='@routes.JobDetailController.loadJob(job.getJobId)'>@job.getJobId</a></span> 
          </div> 
         </td> 
         <td> 
          <div> 
           <h5>@job.getZone</h5> 
           <p>@job.getContinent</p> 
          </div> 

         </td> 
         <td> 
          // 
          // Use of the variable 
          // 
          <div class="progress progress-striped active"> 
           <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="@progressPercentage()" aria-valuemin="0" aria-valuemax="100" style="width: 40%"> 
            <span class="sr-only">@progressPercentage()% Complete (success)</span> 
           </div> 
          </div> 
         </td> 
        </tr> 
       } 
      </tbody> 
     </table> 

見つからない

:値progressPercentage

は、右の構文がありますか、これは単に可能ではないでしょうか?

答えて

1

あなたが何をしようとして行うには、2つの方法(私の知る限り)があります

  • ためのループ内definingとスコープの変数の宣言は。

    @for((job,index) <- jobList.zipWithIndex) { 
        @defining(job.getTotalTaskCount/job.getFinishedTaskCount.toDouble) { progressPercentage => 
         // Rest of your template structure here, use like @progressPercentage 
        } 
    } 
    
  • 宣言(引数としてでjobを渡す)forループ(あなたが使用しているような)が、外reusable code block

    @progressPercentage(job) = @{ 
        job.getTotalTaskCount/job.getFinishedTaskCount.toDouble 
    } 
    @for((job,index) <- jobList.zipWithIndex) { 
        // Rest of your template structure here, use like @progressPercentage(job) 
    } 
    
+0

完璧な回答!私はそれが簡単だと分かっていましたが、これは私が自分で見つけたはずのものでした。 :pありがとう! – kobey

関連する問題