0

我通过以下方式创建了一个 Javascript 对象:

$scope.initNews = function () {
    for (var i = 2013; i > 2000; i--) {
        $scope.news[i] = {};
        $scope.news[i]["year"] = Number(i);
        for (var j = 1; j <= 12; j++) {
            $scope.news[i][j] = {};
            $scope.news[i][j]["month"] = $scope.month_names[j-1];
        }
    }
};

但是 ng-repeat 似乎弄乱了它循环遍历项目的方式。

<ul ng-repeat="old_news_year in news">{{old_news_year.year}}
    <li ng-repeat="old_news_month in old_news_year">{{$index + 1}}. {{old_news_month.month}}</li>
</ul>


对于整个示例,请查看http://jsfiddle.net/tFewZ/1/

编辑
我的印象是(通过在代码中添加一个“调试器”)AngularJS 是根据它们的 $$hashKey 而不是根据它们的 Javascript 索引循环遍历条目的......


仍然不了解第 13 个元素...这是原型属性吗?

提前致谢。

最好的问候,
纪尧姆

4

1 回答 1

1

解决方案是使用 $index 而不是收集方法('in')。

<ul ng-repeat="old_news_year in news">{{old_news_year.year}}
    <li ng-repeat="old_news_month in old_news_year">
      {{$index + 1}}. {{old_news_year[$index+1].month}}
    </li>
</ul>

检查:http: //jsfiddle.net/guillaume1978/XmSTK/2/

于 2013-09-02T09:59:45.617 回答