Ng-repeat показывает только последний элемент
Я разрабатываю почтовый ящик для сообщений с помощью AngularJs, и я столкнулся с одной проблемой: я хочу показать только последний элемент внутри ng-repeat
. Я сделал некоторые исследования и выяснил, что приведенный ниже код должен работать.
<div class="inbox" ng-repeat="recipient in messages">
<ul>
<div>
<span> {{recipient.$id}} <br> </span>
<li class="inboxItem">
<span ng-repeat="messages in recipient"> {{messages.sender}} {{messages.message}} <br></span>
</li>
</div>
</ul>
</div>
Однако это не так. Можете ли вы, ребята, сказать мне, что я делаю неправильно? Я думал, что array.length-1
должен ограничивать ng-repeat, чтобы показывать только последний объект в массиве.
Спасибо!
Ответы
Ответ 1
используйте angularjs $last
в ng-repeat
. здесь doc
<div ng-repeat="n in data track by $index">
<span ng-show="$last">{{n}}</span>
</div>
<span ng-show="$last">{{n}}</span>
, когда его последний повтор $last
будет true
иначе его false
, чтобы вы могли использовать ng-show
или ng-if
с $last
.
вот демонстрационная демонстрация
UPDATE
Я думаю, что нет необходимости в ng-repeat, так как вам нужно показать последний элемент массива (это так же, как @Michael P. Bazos ответ), чтобы сделать это:
$scope.data = [42, 42, 43, 43, 50];
print the last value as : {{ data[data.length-1] }}
вот демонстрация
но если вам действительно нужно делать с ng-repeat, сделайте это
[data[data.length-1]]
создать массив только с последним элементом.
<div ng-repeat="n in [data[data.length-1]] track by $index">
<span>{{n}}</span>
</div>
демо
Ответ 2
Вы можете использовать фильтр limitTo
с -1
Пример:
<div ng-repeat="friend in friends | limitTo: -1">
{{friend.name}}
</div>
См. fiddle
Но если вы показываете только один элемент, возможно, вы хотите избавиться от ng-repeat
...:
<div>
{{friends[friends.length - 1].name}}
</div>
Ответ 3
Что-то вроде этого должно работать.
<div ng-repeat="something in vm.somethings">
<span ng-show="$last">{{ something.value }}</span>
</div>