2013-01-11 23 views
1

我有这样如果playframework的视图/ else语句

#{list items: allTasks, as: 'task'} 
<div class="task grid_12"> 

    #{list items:allClients, as: 'client' } 
     <div class="client grid_1"> 

      #{list items:allTasksDone, as: 'taskDone'} 

       #{if task.name==taskDone.task.name && client.name ==taskDone.client.name} 
        Done 
       #{/if} 
       #{else} 
        Not yet 
       #{/else} 
      #{/list} 
     </div> 
    #{/list} 
</div> 
#{/list} 

与条件语句的视图,但结果是:如果条件为真,则显示“完成尚未”,并且如果条件假,它显示“还没有”。
结果似乎翻了一番。
如何解决这个问题?

+0

根据文档,复合条件应用圆括号包装。 http://www.playframework.org/documentation/1.2.5/tags –

+0

我已经添加了括号作为'#{if(task.name == taskDone.task.name && client.name == taskDone.client.name) }'但它仍然不起作用 –

+1

你确定你没有混合来自不同迭代的#{list}循环的结果。尝试在完成或尚未完成之前打印$ {taskDone_index},并添加
以确保。 – palako

回答

1

感谢帕拉科。是的,这是因为循环变量“taskDone”。我已经检查并修改了我的代码,如下所示:

<div class="task grid_24"> 
<div class="client grid_3"> 
Task/Client 
</div> 
#{list items:allClients, as: 'client' } 
<div class="client grid_2"> 
${client.name} </div> 
#{/list} 
</div> 


#{list items: allTasks, as: 'task'} 
<div class="task grid_24"> 
    <div class="client grid_3"> 
     ${task.name} 
    </div> 

    #{list items:allClients, as: 'client' } 
    %{ 
     i =0; 
     }% 
     <div class="client grid_2"> 
      #{list items:allTasksDone, as: 'taskDone'} 

       #{if (taskDone.task == task && taskDone.client == client)} 
       %{ 
        i++; 
        }% 
       #{/if} 


      #{/list} 
     <div class="taskStatus grid_2"> 
     #{if i>0}Done#{/if} 
      #{else } Not yet#{/else} 
     </div> 
     </div> 

    #{/list} 
</div> 
#{/list}