2012-11-15 43 views
0

我使用標準的Main/Row jTemplate模式,但由於某種原因,只有當有多行(狀態詳細信息)時,該foreach才起作用。如果它是一行數據,它不會呈現(foreach中的行,在此之前表格的部分仍然呈現)。jTemplate Foreach不呈現單行

Data: 
{ 
    "MG": { 
     "Status": "In Transit", 
     "StatusDetail": { 
      "StatusCode": "Actual Pickup", 
      "Date": { 
       "@type": "actual", 
       "#text": "11/13/2012 09:00" 
       }, 
      "Location": "Mentor, OH " 
     } 
    } 
} 

jTemplate代碼:

{#template MAIN} 
<table id="results_hdr" cellpadding="5" cellspacing="0"> 
    <tr> 
     <td class="FieldLabels">Status</td> 
     <td>{$T.MG.Status}</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td class="FieldLabels">Name</td> 
     <td>{$T.MG.Name}</td> 
    </tr> 
    <tr><td colspan="6" style="background-color:White;"></td></tr> 
    <tr> 
     <td>Date</td> 
     <td colspan="3">Detail</td> 
     <td colspan="2">Location</td> 
    </tr> 
    {#foreach $T.MG.StatusDetail as SD} 
     {#include ROW root=$T.SD} 
    {#/for} 
</table> 
<br /> 
{#/template MAIN} 
{#template ROW} 
    <tr> 
     <td> 
      {$T.Date["#text"]}</td> 
     <td colspan="3"> 
      {$T.StatusCode}</td> 
     <td colspan="2"> 
      {$T.Location}</td> 
    </tr> 
{#/template ROW} 

我缺少什麼?

回答

0

您試圖迭代通過$T.MG.StatusDetail,但它不是一個數組,因此{#foreach $T.MG.StatusDetail as SD}語句沒有達到您的期望。

更改您的數據下面讓MG.StatusDetail實際上是一個數組,它會工作:

數據:

var data = { 
    "MG": { 
     "Status": "In Transit", 
     "StatusDetail": [ 
      { 
       "StatusCode": "Actual Pickup", 
       "Date": { 
        "type": "actual", 
        "text": "11/13/2012 09:00" 
       }, 
       "Location": "Mentor, OH " 
      } 
     ] 
    } 
}; 

這裏有一個DEMO

+0

謝謝,就是這樣。正在處理源XML的我的XSL已關閉。 –