8 javascript date angularjs angularjs-orderby
我试图按日期订购一些数据,虽然日期只是字符串,格式为dd-mm-yyyy.
我做了一个过滤器,它转换了普通的数字字符串(在美国的日期格式,我想要英国日期格式),例如01272012到27-01-2014,但当我尝试订购它时,它仍然只看到它们数字字符串,所以01-01-1990将在02-01-2014之前出现.
有关如何在过滤器中执行此操作的任何建议?
谢谢!
更新
我发现如果日期格式为yyyy-mm-dd,日期会自动排序.然后我用来orderBy:['date']
订购数据,只在显示数据时使用我的原始过滤器.
我最终不得不撤消我的数据,显示最近的日期.为了达到这个目的,我-
在我的订单中添加了一个声明:orderBy:['-date']
.
因为orderBy
过滤器,你可以使用它.您的ng-repear可能看起来与此类似:
ng-repeat="item in items | orderBy: orderByDate"
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器上你将定义orderByDate
功能:
$scope.orderByDate = function(item) {
var parts = item.dateString.split('-');
var date = new Date(parseInt(parts[2],
parseInt(parts[1]),
parseInt(parts[0]));
return date;
};
Run Code Online (Sandbox Code Playgroud)
该功能的实现取决于您.我选择Date
从字符串创建.orderByDate
然后,使用<,=,>运算符将从函数返回的对象用于订购.
编辑:解决方案:reverse
由于:reverse
不能与作为参数传递的函数一起使用,因此可以实现自定义函数以返回反转值本身.在这种情况下使用Date
是不可能的,我会构造一个数字然后用减号返回:
$scope.orderByDate = function(item) {
var parts = item.dateString.split('-');
var number = parseInt(parts[2] + parts[1] + parts[0]);
return -number;
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13161 次 |
最近记录: |