【问题标题】:AngularJS show month only for multiple dates of same monthAngularJS 仅针对同一个月的多个日期显示月份
【发布时间】:2018-12-31 05:27:37
【问题描述】:

我需要按月而不是按日期显示帐户对帐单。我有一个日期数组,如下所示;

日期数组

[
  "2018-12-15T06:36:56",
  "2018-12-14T06:36:56",
  "2018-12-16T06:36:56",
  "2018-12-01T06:36:56",
  "2018-11-13T06:36:56",
  "2018-11-01T06:36:56"
]

基于上面的例子,我可以遍历每一个并以人类可读的格式分别显示。但如果有多个日期,我只想显示一个月。

----PS----

我能够将上述数组过滤为“月和年格式 (MM-YYYY)”,并且我也在控制台中得到响应。但是我在将这个数组传递到 forEach 循环之外时遇到了问题。

意思是,如果我在循环中控制它,我会得到数组形状的正确响应。但是在循环之外我只能看到数组对象的最后一个字符串。

进一步请查看plunkr demo

【问题讨论】:

  • 好的,有什么问题吗?你可以按月过滤出来,得到数据
  • 我不明白。您是指在 ng-repeat 中添加此过滤器吗?还是在控制器中?
  • 我已经添加了 plunker 演示,代码可以在 script.js 的第 7 到 32 行看到

标签: arrays angularjs date


【解决方案1】:

没关系,在撞到墙上后,我设法完成了它。

首先,我使用以下循环过滤了“月-年”格式的数组。

$scope.statementListRespone = [
  "2018-12-15T06:36:56",
  "2018-12-14T06:36:56",
  "2018-12-16T06:36:56",
  "2018-12-01T06:36:56",
  "2018-11-13T06:36:56",
  "2018-11-01T06:36:56"
]

var listOutput = $scope.statementListRespone;
var outputList = [];

angular.forEach(listOutput, function(type, $index) {
  output = $filter('date')(listOutput[$index], "MMM yyyy");

  if (output.indexOf(type) === -1) {
    // push this item to our final output array
    outputList.push(output);
  }
});
$scope.outputListFiltered = outputList;

这将为我们提供如下结果;

outputList:修改后的数组

[
  "Oct 2018",
  "Nov 2018",
  "Nov 2018",
  "Dec 2019",
  "Dec 2019",
  "Dec 2019",
  "Dec 2019"
]

比视图部分,我在第 27 行(plunkr)更新了循环代码;

查看

<tr ng-repeat="stateItem in sortedType = (outputListFiltered | unique)">

注意:我使用 angular.filter 库来过滤唯一值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多