我有一个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
从数组中获取值不起作用。
答案 0 :(得分:1)
将此添加到您的html
ng-init="$last ? getLastIndex($index) : ''"
<强>的js 强>
$scope.getLastIndex = function (index){
$scope.lastIndex = index;
}
然后这应该可以正常工作
message_data[lastIndex].content
答案 1 :(得分:0)
虽然我的确切场景可能并不存在于所有版本的AngularJS中,但我通过在括号中包围我的数学解决了这个问题。
message_data[(message_data.length - 1)].content