javascript - 从 JSON 中的现有数据创建日期显示

标签 javascript angularjs json

我创建了一个 Controller ,可以提前几天创建

$http.get('js/data.json')
    .success(function(data) {
      $scope.events = data.events;
      $scope.nextDates = [];
          for (i = 0; i <= 2; i++) {
            // Locked the start date for this example
            var d = new Date('2016.04.24 23:14:13'); 
            $scope.nextDates.push(d.setDate(d.getDate() + i));
          }
     });

然后我有一个包含一些计划事件的 JSON 文件

{
  "events": [
              { "name": "Monday Bloody Monday",
                "dates": ["Mon Apr 25 2016 00:00:00 GMT+0200 (CEST)"]
              },
              { "name": "Hard Work",
                "dates": ["Mon Apr 25 2016 00:00:00 GMT+0200 (CEST)",
                          "Tue Apr 26 2016 00:00:00 GMT+0200 (CEST)",
                          "Wed Apr 27 2016 00:00:00 GMT+0200 (CEST)",
                          "Thu Apr 28 2016 00:00:00 GMT+0200 (CEST)",
                          "Fri Apr 29 2016 00:00:00 GMT+0200 (CEST)"
                         ]
              }
             ]  
}

(不确定字符串是否是存储日期的最佳方式。认为也许 unix epo 编号会更好)

我尝试了以下方法,但没有成功

<div ng-repeat="day in nextdates">
  <h2>{{day | amDateFormat:'dddd, Do MMMM YYYY'}}</h2>

  <div ng-repeat="event in events">
    <div ng-repeat="date in event.dates"
         ng-show="{ day.diff(Date(date)) < 0 }">
      <p>{{event.name}}</p>    
    </div>
  </div>
</div>

顺便说一句:我注入(inject)了 Angular 矩(amDateFormat)来帮助人们读取输出

如何比较日期以查看是否是同一天,然后显示出来?

<小时/>

输出应该是这样的

2016 年 4 月 25 日星期一

星期一血腥星期一

努力工作

2016 年 4 月 26 日星期二

努力工作

2016 年 4 月 27 日星期三

努力工作

2016 年 4 月 28 日星期四

努力工作

2016 年 4 月 29 日星期五

努力工作

也许我应该将逻辑保留在 Controller 中......

最佳答案

希望您使用Underscore.js我们在做js开发的时候,很自然的选择api。希望对你有帮助。

JS

$scope.filteredEvents=[];

  _.each(nextdates, function (d) {
   _.each(events, function (e) {
   _.each(e.dates, function (dt) {
        var difference = moment(d) - moment(dt);
        if (difference == 0) {
           $scope.filteredEvents.push(e);
        } 
     });
   });
  });

Html

<div ng-repeat="day in nextdates">
  <h2>{{day | amDateFormat:'dddd, Do MMMM YYYY'}}</h2>

  <div ng-repeat="event in filteredEvents">
     <p>{{event.name}}</p>    
  </div>
</div>

关于javascript - 从 JSON 中的现有数据创建日期显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36825423/

相关文章:

ios - 获取 NSArray 键值

json - $ .get使用google API检索YouTube视频,在IE中不返回任何内容

javascript - 如何在同一窗口和同一选项卡中打开 URL

javascript - Redux 调度一个包含要从 reducer 调用的方法的操作

javascript - 如何设置带 Angular 文本阴影?

ios LINESTRING 解析

javascript - Node js 中未定义错误的模型

javascript - Woocommerce 通过 JS 更改产品变体

javascript - AngularJS 变量值未在 View 中更新?

angularjs - 另一个指令的 templateUrl 内的指令和传递属性