0

你好~~

我有这样的数据:

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

]

我需要使用下划线模板方法来生成这样的模板结果

<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>

    <% }); %>

会和帮助告诉我如何处理它?或者有没有其他解决方案来解决它?谢谢你!

4

2 回答 2

0

除了如 maketest 所述传递数据参数外,模板中的内部循环未包含在 <% %> 中,并且缺少结束分号。

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

    <% }); %>
于 2013-10-10T13:44:30.757 回答
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在下划线模板中使用变量。

于 2013-10-10T13:31:42.227 回答