ngrepeat、ngif和比较日期对象的各个部分

ngrepeat, ngif, and comparing parts of a date object

本文关键字:个部 对象 日期 ngif 比较 ngrepeat      更新时间:2023-09-26

我正在构建一个事件列表(自学Angular),当年/月发生变化时,我试图有条件地在事件列表之间插入一个年和一个月元素。

<body ng-controller="CalendarController">
 <div ng-repeat="event in events">
  <div ng-if="$first || year != prevYear ">
   {{event.date | date: 'yyyy'}}
  </div>
  <div>
   {{ event.name }}
  </div>
  <div>
   {{ event.date | date: 'shortTime'}}
  </div>
 </div>
</body>

这里,如果元素是第一个,它前面会有一个year元素(对于月份来说最终也是如此),或者如果上一个事件的年份与当前事件不同。

(function(){
  var app = angular.module('a2Events', []);
  app.controller('CalendarController', function($scope, $http) {
    $http.get('../data.json')
         .success(function(data, status, headers, config) {
          angular.forEach(data, function(value, key) {
            value['date'] = Date.parse(value['date']);
          });
      $scope.events = data;
    })
    .error(function(data, status, headers, config) {
      console.log(status);
    });
  });
})();

在这里,我只是用一个日期对象替换日期字符串,所有这些都是从json文件中提取的。该文件只是按日期顺序列出的事件。我的假设是,我可以从日期对象中分别提取年和月(使用$index),只需使用ngif在需要的地方有条件地添加年/月元素,但我似乎无法以所需的方式访问日期对象。有人建议我做我需要的事情吗,或者有其他方法吗?

输出应该类似于:
2015年
七月
事件1
事件2
八月
事件3
事件4
2016年
一月
事件5
etc

我刚刚作弊,做了

ng-if="event.year != events[$index - 1].year"