2011-06-14 4 views
0

JSON 배열의 데이터와 jquery 템플릿이 있습니다.jquery 템플릿을 준비 할 때까지 배열을 반복하지 않고 * 반복하지 않으려면 어떻게해야합니까?

나는 "컨트롤"을 템플릿으로 만들고, jquery의 $ .get()을 사용하여 자신의 파일로 나눕니다. 다음의 간단한 코드/마크 업을 보여줍니다

<html> 
    <head> 
     <script type="text/javascript"> 

      var payeeData = [ 
       { 
        Name: "Ben Alabaster", 
        Address: "My Address" 
       }, 
       { 
        Name: "Joe Bloggs", 
        Address: "Joe's Address" 
       }, 
       { 
        Name: "John Doe", 
        Address: "Chez John" 
       } 
      ]; 

      $(function() { 
       $.get("./Templates/Payees.tmpl", function (template) { 
        $("#payeePlaceholder").replaceWith($.tmpl(template, payeeData)); 
       }); 
      }); 

     </script> 
    <head> 
    <body> 
     <div id="payeePlaceholder" /> 
    </body> 
</html> 

그리고 문제의 템플릿 파일의 내용 : 내 실제 생산 코드에서

<div class="togglePanel"> 
    <table id="payeeData"> 
     <tr> 
      <th>Payee</th> 
      <th>Address</th> 
     </tr> 
     <!-- Iterate here --> 
     {{each(idx,val)}} 
     <tr> 
      <td>${${val.Name}}</td> 
      <td>${${val.Address}}</td> 
     </tr> 
     {{/each}} 
     <!-- End iteration --> 
     <tr> 
      <td Colspan="2">${ArrayCount} Payees</td> 
     </tr> 
    </table> 
</div> 

을, 나는 반복 행을 분할 할 수 없습니다 이유가 템플릿을 내부 및 외부로 중첩시키는 방법을 생각해 봤지만 다른 사람이 방법을 보여줄 수는 있지만 문서에서이 템플릿을 수집하지는 못했습니다.

지금 템플릿 엔진에 배열을 푸시하면 배열의 각 항목에 대해이 전체 템플릿의 반복이 끝납니다. 그 방법을 설명 할 수 있습니까?

답변

2

가장 우아한 해결책은 아니지만 가장 쉬운 방법 중 하나입니다. 개체에 배열을 래핑하면 전체 템플릿이 한 번만 렌더링되고 직접 반복 할 수 있습니다.

$("#payeePlaceholder").replaceWith($.tmpl(template, {items: payeeData})); 

그런 다음 templace은 다음과 같이 보일 것이다 :

<div class="togglePanel"> 
    <table id="payeeData"> 
     <tr> 
      <th>Payee</th> 
      <th>Address</th> 
     </tr> 
     <!-- Iterate here --> 
     {{each(idx,val) items}} 
     <tr> 
      <td>${val.Name}</td> 
      <td>${val.Address}</td> 
     </tr> 
     {{/each}} 
     <!-- End iteration --> 
     <tr> 
      <td Colspan="2">${items.length} Payees</td> 
     </tr> 
    </table> 
</div> 
+0

덕분에 당신이 가장 우아하지, 맞아, 짝짓기,하지만 일을한다. 이제는 충분합니다. D 누군가가 적절한 해결책을 가지고 있기를 바랍니다. 그러나 그때까지는 최소한 뭔가를 얻었습니다. – BenAlabaster

관련 문제