我正在使用角度js并尝试显示一个文本,即如果订单是在5天前从今天开始放置的话。因此,如果todaysDate和Order.dateCreated< = 5之间的天数差异,那么我想显示'recent',否则为空:
orderid | dateCreated | status
1 | 27-2-2014 | recent
2 | 27-1-2014 |
angular script fragment:
<table>
<tr data-ng-repeat="order in orders" >
<td>{{order.id}}</td>
<td>{{order.dateCreated}}</td>
<td><span ng-show="(getDate()-order.dateCreated)<=5">recent</span></td>
</tr>
</table>
答案 0 :(得分:0)
您只需要在标准JavaScript中执行此操作,并向您的范围公开一个方法以允许订单使用:
但是,如果您的日期目前以英国格式存储,则它们会出现在您的问题中。您将无法像这样解析它们,请考虑让您的服务器端代码吐出JavaScript可以解析的标准格式。
如果您发现在执行此操作时遇到问题,无法更改该格式的服务器端响应,或者希望保留格式,则可以使用库来解析它,例如:http://momentjs.com/docs/#/parsing/string-format/这也是有一些不错的工具来检查差异:http://momentjs.com/docs/#/displaying/difference/
$scope.isRecentOrder = function(date) {
// Assuming date is a string of parsable format: ie. "2014-01-27T01:00:00+00:00"
var diff = new Date() - new Date(date);
// Calculate from milliseconds
var days = ((((diff / 1000) / 60) / 60) / 24);
return days >= 5;
}
然后您可以使用指令ng-show="isRecentOrder(order.dateCreated)"