ngrepeat,ngif和比较日期对象的部分

时间:2015-06-30 22:41:45

标签: javascript angularjs

我正在构建一个事件列表(自学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>

这里,如果元素是第一个元素,前面是一个年元素(最终月份相同),或者前一个事件的年份与当前事件不同。

(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
八月
EVENT3
EVENT4
2016
一月
event5
等等

1 个答案:

答案 0 :(得分:0)

我只是作弊而且做了

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