如何显示带有下划线模板的 JS 对象?

How to display a JS object with underscore templates?

我打算使用下划线模板显示一个 JS 数据对象。我似乎无法弄清楚如何钻取对象以获取国家/地区名称或其他日期(例如 tarrifType)并使用我的模板显示它。对象看起来像这样...

var items = [
{
"country": {
  "China": [
    {
      "tarrifType": "China Pass",
      "fixLine": "23p",

    },
    {
      "tarrifType": "Monthly plan",
      "fixLine": "3p",
    }
  ],
  "Australia": [
    {
      "tarrifType": "Pay as you go",
      "fixLine": "73p"
   },
    {
      "tarrifType": "Australia Pass",
      "fixLine": "49p",

    },
    {
      "tarrifType": "Monthly plan",
      "fixLine": "20p",

    }
  ],     
  "Nigeria": [
    {
      "tarrifType": "Pay as you go",
      "fixLine": "73p"
    },
    {
      "tarrifType": "Nigeria Pass",
      "fixLine": "49p"
    }
  ]
}

} ];

我正在读取对象并将其绑定到像这样的模板,它使用这个

 var tableTemplate = $("#table-data").html();

 $("table.outer tbody").html(_.template( tableTemplate, {items:items} ));

我正在使用这个下划线模板...

<script type="text/html" id='table-data'>
<% _.each(items,function(item,key,list){ %>
<tr>
    <td></td>
    <td><%- item.country %></td>
</tr>
<% }) %>
</script>

到目前为止,我没有收到任何错误,但模板呈现但仅显示 [object Object],所以我认为它快到了。我尝试使用点符号 (item.country),但我仍然需要弄清楚如何循环显示它。有什么想法吗?

改变

$("table.outer tbody").html(_.template( tableTemplate, {items:items} ));

$("table.outer tbody").html(_.template( tableTemplate, {items:items.country} ));

还有变化

<td><%- item %></td>

<td><%- country[key].tarrifType %></td>

项目有一个 属性: 国家。不要使用项目调用模板,而是使用 items.country 调用它。由于您在循环中拥有密钥,因此您可以在每次迭代中访问该对象。每个对象还 returns 一个 tarrifTypes 等数组。所以你 may/may 也不需要迭代这些。

我也创造了this fiddle。虽然它与 _ 模板没有直接关系,但它仍然可以让您了解如何遍历 JS 对象。

干杯,=]