2013-10-10 43 views
0

你好~~如何產生的underscore.js模板有兩個_.each

我DATAS是這樣的:

var datas = [ 
    { 
    country:'USA', 
    citys:[ 
     { 
      name:'New York' 
     } , 
     { 
      name:'Hawaii' 
     } 
    ] 
    }, 
    { 
    country:'China', 
    citys:[ 
     { 
      name:'Shangahai' 
     } , 
     { 
      name:'Beijing' 
     } 
    ] 
    } 

] 

,我需要使用下劃線模板的方法來grenerate模板導致像這

<h3>USA</h3> 
<ul> 
    <li>New York</li> 
    <li>Hawaii</li> 
</ul> 
<h3>China</h3> 
<ul> 
    <li>Shanghai</li> 
    <li>Beijing</li> 
</ul> 

我使用模板波紋管,但它沒有工作!

<% _.each(datas, function(district) { %> 
      <h3><%= district.districtName %></h3> 
      <ul> 
       _.each(district.citys,function(city){ 
       <li><%= city.name %></li> 
       } 
      </ul> 

    <% }); %> 

會和幫助告訴我如何處理它?還是有其他解決方案來解決它? 謝謝!

+0

除了答案提到的格式錯誤,你的外循環是印刷''district.districtName''但在你的代碼中的對象的屬性是''country''。 –

回答

0

您需要在您的render查看功能中具有此代碼。而你的模板有錯誤。以下是固定模板。

模板:

<% _.each(datas, function(district) { %> 
    <h3><%= district.districtName %></h3> 
    <ul> 
     <% _.each(district.citys,function(city){ %> 
      <li><%= city.name %></li> 
     <% }); %> 
    </ul> 
<% }); %> 

代碼:

var datas = [ 
     { 
     country:'USA', 
     citys:[ 
      { 
       name:'New York' 
      } , 
      { 
       name:'Hawaii' 
      } 
     ] 
     }, 
     { 
     country:'China', 
     citys:[ 
      { 
       name:'Shangahai' 
      } , 
      { 
       name:'Beijing' 
      } 
     ] 
     } 
    ]; 

    var templateStr = '<div></div>'; // load template from server 
    var template = _.template(templateStr); 
    var generatedHtml = template({ datas : datas }); 

你需要有設置數據模板生成這個樣子。所以你可以在你的下劃線模板中使用datas變量。

0

除了傳遞數據參數作爲maketest記錄外,模板中的內循環未包含在<%%>中,並且缺少結尾分號。

<% _.each(datas, function(district) { %> 
      <h3><%= district.districtName %></h3> 
      <ul> 
      <% _.each(district.citys,function(city){ %> 
       <li><%= city.name %></li> 
       <% }); %> 
      </ul> 

    <% }); %>