使用Angular ng-repeat获取数组的最后一个索引



我有一个我正在迭代的Object,它包含数组值,这里有一个例子(注意,我的版本有比content更多的信息):

$scope.messages = { "1": [ 
    { "content": "Hello" },
    { "content": "How are you" },
    { "content": "This should be displayed" }
]};

将此作为"消息传递线程"类型的场景,您将根据电话号码(在此事件中为1)对线程进行分组,然后显示最后收到的消息(数组的最后索引)。

这是我试过的,但是不起作用。

<div ng-repeat="(thread_id, message_data) in messages">
    Thread ID: {{thread_id}} <br>
    Last message: {{message_data[message_data.length - 1].content}}
</div>

显示线程id,但不显示消息数据。

硬编码值,例如:

{{message_data[0].content}}

按预期工作。

在人们开始建议$last之前,请注意$last只返回true或false,这取决于ng-repeat迭代是否在其最后一个周期。考虑到我使用的是(key, value)对,在我的情况下,数组是值。我需要值的数组长度,value.length确实提供了。在这种情况下:

 {{ message_data.length }}

将打印出3的值。但是,使用message_data.length - 1从数组中获取值是行不通的。

添加到你的html

ng-init="$last ? getLastIndex($index) : ''"

Js

$scope.getLastIndex = function (index){
  $scope.lastIndex = index;
}

那么这应该可以正常工作

message_data[lastIndex].content

虽然我的确切情况可能不存在于所有版本的AngularJS中,但我通过在括号中包围我的数学来解决这个问题。

message_data[(message_data.length - 1)].content

最新更新