order - Date值,它们在Angular JS中只是字符串
OrderBy Date values, which are just strings in Angular JS
我正在尝试按日期排序一些数据,尽管日期只是字符串,格式为dd-mm-yyyy。
我做了一个过滤器,它转换了普通的数字字符串(在美国日期格式中,我想要英国日期格式),例如01272012到27-01-2014,但是当我试图对它们排序时,它仍然只将它们视为数字字符串,所以01-01-1990会在02-01-2014之前。
关于如何在过滤器中做到这一点有什么建议吗?
谢谢!
我发现如果日期格式是yyyy-mm-dd,日期会自动排序。然后,我使用using orderBy:['date']
对数据进行排序,在显示数据时仅使用原始过滤器。
我最后不得不反转我的数据,显示最近的日期。为了实现这一点,我在order语句中添加了一个-
: orderBy:['-date']
.
因为orderBy
过滤器,您可以使用它。您的ng-repear可能看起来像这样:
ng-repeat="item in items | orderBy: orderByDate"
然后在控制器上定义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;
};
功能的实现由你决定。我选择从字符串创建Date
。然后使用<, =,>操作符对orderByDate
函数返回的对象进行排序。
EDIT: solution for :reverse
由于:reverse
不能与作为参数传递的函数一起使用,因此您可以实现自定义函数本身返回反转值。在这种情况下,使用Date
是不可能的,我会构造一个数字,然后用减号返回它:
$scope.orderByDate = function(item) {
var parts = item.dateString.split('-');
var number = parseInt(parts[2] + parts[1] + parts[0]);
return -number;
};
var now = Date.now();现在= $过滤器(日期)(现在的yyyy-MM-ddThh: mm: ss + hh: mm");
则可以使用相应的格式化日期进行数据过滤
相关文章:
- Angular JS IE9 Hashbang url rewriting
- Node.JS, Angular.JS, MySql,Express.JS
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- JS/ANGULAR使用一个变量's值作为另一个对象的键
- 添加一个“;以及“;到String-js/Angular中的最后一个单词
- 未调用内部JS Angular Controller
- Angular html文件可以'找不到JS控制器[Node.JS/Angular]
- 尝试跨站点 JSON 使用 JS(Angular)请求 API
- 找不到Angular.js Angular拖放自定义回调函数
- 如何使用Node.js, Angular.js和Firebase实现无限滚动
- 过滤文件夹中的文件,并使用ng-repeat (JS, Angular)显示它们
- If - JS/Angular中变量的正则表达式(不区分大小写)
- JS-angular为什么使用“ng click=”;f()"`属性,而不是`$(el).on('cl
- 使用Node.js / Angular对Google电子表格JSON进行跨域请求
- 多个步骤来处理数据,这是JS/Angular的好模式
- Highstock.js / Angular.js中的范围选择器在xAxis配置字段存在时不会更新图表
- 永远运行一个Node.js Angular.js Gulp.js应用
- 如何在不显示API密钥的情况下使此代码正常工作?我正在Node.js/Angular/Express上构建应用程序
- 图表.js & Angular 2 - ng2-charts 自定义点击事件
- 将html模板解析为客户端JS.Angular + Browserify + Babel + ES2015 + Gulp