使用大JSON进行ng-repeat

时间:2015-10-06 14:06:08

标签: json angularjs

我有一个AngularJS变量var vm = this;,其中包含一个大的JSON格式数据:

vm.data = {
    "sites": [{
        "siteName": "A",
            "countries": [{
                "country": "DE",
                "servers": [{
                    "serverType": "master",
                    "URL": ""
                },{
                    "serverType": "slave",
                    "URL": ""
                }]
            }]

        },{
            "siteName": "B",
            "countries": [{
                "country": "IT",
                "servers": [{
                    "serverType": "master",
                    "URL": ""
                },{
                    "serverType": "slave",
                    "URL": ""
                }]
            },{
                "country": "NL",
                "servers": [{
                    "serverType": "master",
                    "URL": ""
                },{
                    "serverType": "slave",
                    "URL": ""
                }]
            }]
        }]
};

我想把这些数据放在表格中

我使用“c”因为“控制器(我的控制器的名称)为c”。

<tr ng-repeat="site in c.data.sites">
            <td>{{ site.siteName }}</td>
            <td>{{ site.countries }}</td>
            <td>{{ site.countries.name }}</td>
</tr>

第一个 td 完美运行,第二个显示国家/地区设置中包含的所有内容,最后一个不显示任何内容。

我尝试声明vm.data.sites.countries,但失败了。

你能否对此有所了解?

2 个答案:

答案 0 :(得分:2)

您的countries是一个数组,因此如果您想列出每个国家/地区,您可以使用新循环访问国家/地区对象的每个名称(国家/地区对象的名称属性为countryng-repeat)。

<tr ng-repeat="site in c.data.sites">
            <td>{{ site.siteName }}</td>
            <td>{{ site.countries }}</td>
            <td>
                <span ng-repeat="country in site.countries>
                     {{country.country}}
                     <span ng-if="!$last">, </span>
                </span>
            </td>
</tr>

答案 1 :(得分:1)

嗯,你并没有真正适当地引用你的密钥。

<tr ng-repeat="site in c.data.sites">
   <td>{{ site.siteName }}</td>
   <td>
      <span ng-repeat="country in site.countries">
          {{ country.country }}
          <span ng-hide="$last">, </span>
      </span>
   </td>
</tr>