如何获得ng-repeat中的前一个项目?

我有一个模板,我只想生成一些HTML,如果当前项目有一些不同的领域从前一个项目。 我如何访问ng-repeat中的前一个项目?

你可以做类似的事情

<div ng-app="test-app" ng-controller="MyController"> <ul id="contents"> <li ng-repeat="content in contents"> <div class="title">{{$index}} - {{content.title}} - {{contents[$index - 1]}}</div> </li> </ul> </div> 

JS

 var app = angular.module('test-app', []); app.controller('MyController', function($scope){ $scope.contents=[{ title: 'First' }, { title: 'Second' }, { title: 'Third' }] }) 

演示: 小提琴


请注意: $index是指令数组,可能与作用域数组不同。 使用内联variables来访问正确的数组。

 <li ng-repeat="content in (correctContents = (contents | orderBy:'id'))"> {{ correctContents[$index - 1] }} is the prev element </li> 

如果你过滤或orderBy, contents[$index] != content

一种方法是使用$索引来定位上一个项目:

HTML:

 <div ng-repeat="item in items"> <span>{{$index}}: </span> <span ng-show="items[$index-1].name=='Misko'" ng-bind="item.name"></span> </div> 

JS:

 app.controller('AppController', [ '$scope', function($scope) { $scope.items = [ {name: 'Misko'}, {name: 'Igor'}, {name: 'Vojta'} ]; } ] ); 

Plunker

为什么不使用ng-repeat key ? (与$index相比, $index似乎比较棘手)

 <div ng-repeat="(key, item) in data"> <p>My previous item is {{ data[key-1] }}, my actual item is {{ item }} </div>