使用Angular ng-repeat

时间:2015-10-09 07:08:02

标签: javascript arrays angularjs ionic

我有一个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从数组中获取值不起作用。

2 个答案:

答案 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