ng-repeat 只显示最后一个元素

ng-repeat show only last element

我正在为 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 只显示数组中的最后一个对象。

谢谢!

您可以将 limitTo 过滤器与 -1

一起使用

示例

<div ng-repeat="friend in friends | limitTo: -1">
    {{friend.name}}
</div>

fiddle

但是如果你只显示一个元素,也许你想去掉 ng-repeat... :

<div>
    {{friends[friends.length - 1].name}}
</div>

ng-repeat 中使用 angularjs $last。这里是 the 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-showng-if$last.

这是一个sample demo


更新 我认为不需要 ng-repeat 因为你需要显示数组的最后一个元素(这与@Michael P. Bazos 的回答相同),要做到这一点:

$scope.data = [42, 42, 43, 43, 50];

print the last value as : {{ data[data.length-1] }}

这里是 demo

但是如果你真的需要用 ng-repeat 做这个

[data[data.length-1]] 创建一个仅包含最后一个元素的数组。

<div ng-repeat="n in [data[data.length-1]] track by $index">
    <span>{{n}}</span>
</div>

demo

像这样的东西应该有用。

<div ng-repeat="something in vm.somethings">
  <span ng-show="$last">{{ something.value }}</span>
</div>