评估AngularJS表达式

时间:2015-11-04 23:28:35

标签: javascript angularjs

我正在迭代一个包含日期的列表(jobs.submitted):

<div ng-controller="DashboardController as dashboard">


<div ng-repeat="job in dashboard.jobs | filter: {status: 'started'}" class="row"> 
    <div class="col-xs-3">{{job.submitted}}</div>
</div>

现在我想计算持续时间:

(new Date(job.submitted)) - (new Date(job.completed))

如果我把它直接放到表达式中我会得到语法错误(我猜angularJS不理解Date对象)。

如果我将它放入一个函数,即控制器中的函数,该函数永远不会评估:

{{dashboard.getDuration(job)}}

是空白的。

解决这个问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

试试这个

$scope.getDays=function getDays(toDate, fromDate, isNegetiveAllowed) {
    toDate=new Date(toDate);
    fromDate=new Date(fromDate);
    return Math.round((toDate - fromDate) / (1000 * 60 * 60 * 24));
};

HTML

<div ng-repeat="job in dashboard.jobs | filter: {status: 'started'}" class="row"> 
    <div class="col-xs-3">{{ getDays(job.completed,job.submitted) }}</div>
</div>

答案 1 :(得分:0)

这应该在控制器中完成,而不是在视图中。 你可以这样试试:

在视图中:

  

{{getJobDiiff(作业)}}

在控制器中:

$scope.getJobDiiff= function(job){
//chage dates in timestamp 
var timestamp1 = new Date(job.submitted).getTime();
var timestamp2 = new Date(job.completed)).getTime();
var diff = timestamp1 - timestamp2;
var newDate = new Date (diff);
return newDate;

}

答案 2 :(得分:0)

Here is one way

var date1 = new Date("7/11/2010");
var date2 = new Date("12/12/2010");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);
相关问题