javascript - AngularJS 减去 (DueDateActual - DueDateForecaste) 从 JSON 文件消耗的 $scope

标签 javascript json angularjs scope

我是 AngularJS 新手,需要一些帮助来查找两个日期之间的天数。我从 JSON 文件中使用了两个日期,我想动态地找出每个 ID 的两个日期之间的天数。以下是我所拥有的,我需要一些帮助。

<!doctype html>
<html ng-app="MyApp">
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="Scripts/angular.min.js"></script>

</head>

<body >
 <div ng-controller="SiteCtrl">
   <ul ng-repeat="site in sites">
     <li>{{site.ID}}</li>
     <li>{{dayDiff}}</li>
   </ul>
 </div>
 </body>
<script>
var app = angular.module("MyApp", []);

app.controller("SiteCtrl", function($scope, $http) {
  $http.get('JSON/getsamplesitesCopy.json').
    success(function(data, status, headers, config) {


    $scope.sites = data;

    $scope.dayDiff = $scope.sites.DueDateActual - $scope.sites.DueDateForecasted;


}).
   error(function(data, status, headers, config) {
      // log error
   });
});
</script>

</html>

最佳答案

考虑您的数据:

data = [
  { 
     "ID": "136", 
     "DueDateForecasted": "2015-09-10",      
     "DueDateActual": "2015-09-17"
  },
  { ... }
]

您有一个对象数组,例如:

$scope.sites = data // $scope.sites is also an array
$scope.sites.DueDateActual // undefined
$scope.sites[0].DueDateActual // "2015-09-17"

关于日期的注释。字符串格式的日期(例如 2015-09-17)在与另一个日期相减时不会给出有意义的结果。尝试在浏览器控制台中输入 "test"- "test"。您猜对了,它是 NaN。为了正确地对日期进行数学运算,您需要创建一个新的 Date 对象,并将日期字符串作为参数传递。

var dueDateActual = new Date($scope.sites[0].DueDateActual)
dueDateActual // Wed Sep 16 2015 20:00:00 GMT-0400 (EDT)

var dueDateForecasted = new Date($scope.sites[0].DueDateForecasted)
dueDateActual - dueDateForecasted // -604800000

这将返回毫秒,因此您需要将其转换为天

为了对数组中的每个元素执行此操作,您可以在进程中添加一个字段来映射数组。

$scope.sites = data.map(function (item) {
  var millisDiff = (new Date(item.DueDateActual) - new Date(item.DueDateForecasted))
  item.dayDiff = Math.floor(millisDiff / ( 1000 * 60 * 60 * 24 ))
  return item
})

然后稍微修改您的 ng-repeat 以包含重复项的差异。

<ul ng-repeat="site in sites">
  <li>{{site.ID}}</li>
  <li>{{site.dayDiff}}</li>
</ul>

关于javascript - AngularJS 减去 (DueDateActual - DueDateForecaste) 从 JSON 文件消耗的 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31900946/

相关文章:

javascript - 获取在 Angular 范围内显示的新名称

javascript - 使用 ng-class (AngularJS) 搜索 JSON 对象

javascript - 带有服务器发送事件的 AngularJS

angularjs - 在 Angular 2 中发送帖子时出错

缩小后的 Javascript 错误

javascript - 查找哪个li被点击

php - 将 json_encoded 数据从 PHP 传递到 jQuery/Javascript 的 IE6/7 安全方法是什么?

javascript - 类型错误 : Cannot read property 'slice' of undefined

javascript - 在mapbox/传单中设置geojson线的样式

javascript - 悬停时显示现有的 div