ng-repeat只给我一个结果

时间:2015-08-08 12:43:41

标签: javascript json angularjs

我正在使用AngularJs来阅读iTunes API。我想在<entry>得到所有结果,但到目前为止我只得到第一个结果:

<div class="container" ng-controller="appController">
<div class="item" ng-repeat="chart in charts">
    <h2>{{chart.entry[$index]['im:name'].label}}</h2>
</div>

结果是来自im:name的{​​{1}};当我用一个数字替换entry[0]时,我也得到了结果,所以很明显一切都很好。

控制器:

$index

加载JSON文件:

app.controller('appController', ['$scope', 'charts', function($scope, charts) {
  charts.success(function(data) {
    $scope.charts = data;
  });

}]);

Json structure

3 个答案:

答案 0 :(得分:2)

根据你的JSON结构,你试图遍历charts,但它不是一个数组,它只是一个带有一个名为entry的数组的对象,它包含所有条目。所以你应该改变你的

<div class="item" ng-repeat="chart in charts">
    <h2>{{chart.entry[$index]['im:name'].label}}</h2>
</div>

<div class="item" ng-repeat="entry in charts.feed.entry">
    <h2>{{entry ['im:name'].label}}</h2>
</div>

答案 1 :(得分:2)

我想你想重复一下chart.feed.entry。

<div class="item" ng-repeat="entry in charts.feed.entry">
    <h2>{{entry['im:name'].label}}</h2>
</div>

编辑:解释为什么这是chart.feed.entry而不是charts.entry。从问题:

<div class="item" ng-repeat="chart in charts">

这循环通过图表,因为它是一个对象而不是一个数组,意味着循环其属性。只有一个,所以有一个迭代,它将单个属性feed分配给图表。因此:

chart.entry[$index]['im:name'].label

相当于:

charts.feed.entry[$index]['im:name'].label

答案 2 :(得分:1)

尝试将其更改为

<div class="container" ng-controller="appController">
<div class="item" ng-repeat="chart in charts">
    <div class="item" ng-repeat="entry in chart.entry">
        <h2>{{entry['im:name'].label}}</h2>
    </div>
</div>
相关问题