Javascript AngularJS仅显示循环中的第一个日期div(更新数组对象)

Javascript AngularJS仅显示循环中的第一个日期div(更新数组对象),javascript,angularjs,Javascript,Angularjs,我试图在Angular~1.2.24中将javascript对象呈现给模板 只应显示第一次出现的item.day 示例对象: $scope.listtrail = [{ day: '2015-08-15', id: 123, timestamp: '2015-08-15 12:23:12' },{ day: '2015-08-15', id: 122, timestamp: '2015-08-15 12:43:34' },{ day: '2

我试图在Angular~1.2.24中将javascript对象呈现给模板

只应显示第一次出现的item.day

示例对象:

$scope.listtrail = [{
    day: '2015-08-15',
    id: 123,
    timestamp: '2015-08-15 12:23:12'
},{
    day: '2015-08-15',
    id: 122,
    timestamp: '2015-08-15 12:43:34'
},{
    day: '2015-08-15',
    id: 121,
    timestamp: '2015-08-15 14:12:56'
},{
    day: '2015-08-14',
    id: 120,
    timestamp: '2015-08-14 11:12:09'
},{
    day: '2015-08-14',
    id: 118,
    timestamp: '2015-08-14 10:11:02'
}]
模板部分示例:

<div ng-repeat="item in listtrail">
    <div>{{item.day}}</div>
    <div>{{item.timestamp}}</div>
</div>

{{item.day}
{{item.timestamp}
模板输出目标示例:

<div>
    <div>2015-08-15</div>
    <div>2015-08-15 12:23:12</div>
</div>
<div>
    <div>2015-08-15 12:43:34</div>
</div>
<div>
    <div>2015-08-15 14:12:56</div>
</div>
<div>
    <div>2015-08-14</div>
    <div>2015-08-14 11:12:09</div>
</div>
<div>
    <div>2015-08-14 10:11:02</div>
</div>

2015-08-15
2015-08-15 12:23:12
2015-08-15 12:43:34
2015-08-15 14:12:56
2015-08-14
2015-08-14 11:12:09
2015-08-14 10:11:02

请注意,javascript数组也会每隔几秒钟使用一个内部拼接函数(请记住)进行预处理(随着它的增长)。

您需要与前一天的值匹配

<div ng-repeat="item in listtrail">
  <div ng-if='listtrail[$index -1].day != item.day'>{{item.day}}</div>
  <div>{{item.timestamp}}</div>
</div>

{{item.day}
{{item.timestamp}
您需要按日期顺序保存记录:)

请参见此


{{item.day}
{{item.timestamp}
这应该很好:


然而,使用$filter在ng repeat上执行某种groupBy可能更有弹性。看一看角度过滤器

我得到了与其他两个相同的答案,但额外检查了
$index==0

<div ng-app>
  <div ng-controller="TestCtrl">
    <div ng-repeat="item in listtrail">
      <div ng-if="$index == 0 || listtrail[$index-1].day != item.day" ng->{{item.day}}</div>
      <div>{{item.timestamp}}</div>
    </div>
  </div>
</div>

{{item.day}
{{item.timestamp}
不检查似乎不会导致错误,但它冒犯了我的感情


最好的解决方案是使用模块。 然后可以将其编码为:

<div ng-app="app">
  <div ng-controller="TestCtrl">
    <div ng-repeat="(key, value) in listtrail | groupBy: 'day'">
        <div>{{ key }}</div>
        <div ng-repeat="item in value">{{item.timestamp}}</div>
    </div>
  </div>
</div>

{{key}}
{{item.timestamp}

看看

你能发布完整的示例吗?JS对象必须是一个数组,还是可以让它成为一个JSON对象?@danielrsmith无法发布整个代码,因为它被绑定到一个更大的完整应用程序中。不过,我编辑了上面的代码来说明示例对象,需要ng repeat和final output。@UltraSonja它是从rest服务传输期间的JSON对象,存储回本地变量,由于它的重复性,现在是一个对象数组。在一个单独的示例中,它似乎工作得很好:
<div ng-app="app">
  <div ng-controller="TestCtrl">
    <div ng-repeat="(key, value) in listtrail | groupBy: 'day'">
        <div>{{ key }}</div>
        <div ng-repeat="item in value">{{item.timestamp}}</div>
    </div>
  </div>
</div>