如何ngTable筛选日期? [英] How to filter date in ngTable?

查看:192
本文介绍了如何ngTable筛选日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想基于给定的格式在ngTable过滤日期ðMMM YYYY HH:MM:SS 。我跟着这个答案并创建自定义过滤器,但它没有考虑在给定的格式,而不是 D MMM,YYYY

我怎么能有ngTable过滤器过滤在给定的格式的日期?这里是我的 plunker

ngTable

 < TD数据标题='开始日期'级=TEXT-中心头级=TEXT-左过滤器={'起始日期':'文字'}排序=类型> {{item.start_date |日期:'D MMM YYYY HH:MM:SS'}}< / TD>
        < TD数据标题='结束日期'级=TEXT-中心头级=TEXT-左过滤器={'END_DATE':'文字'}排序=类型&GT ; {{item.end_date |日期:'D MMM YYYY HH:MM:SS'}}< / TD>

自定义过滤器

 过滤器('customUserDateFilter',函数($过滤器){
    返回功能(值,dateString){
        变种过滤= [];
        如果(typeof运算值='不确定'和;!&安培;!typeof运算dateString =未定义){
            angular.forEach(值,函数(值){
                VAR源=($过滤器('日期')(value.start_date))与toLowerCase()。
                变种临时= dateString.toLowerCase();
                //如果($过滤器('日期')(value.start_date).indexOf(dateString)> = 0){
                //如果(temp.indexOf()> = 0)
                    //调试;
                如果(source.indexOf(温度)GT; = 0){
                    filtered.push(值);
                }
            });
        }
        返回过滤;
    }
})


解决方案

您,当您更改日期的格式要小心。这是因为过滤器格式具有为相同的格式示于表以确保正确的功能的时间:

  VAR源=($过滤器('日期')(value.start_date))与toLowerCase()。

必须改成这样:

  VAR源=($过滤器('日期')(value.start_date,'D MMM YYYY HH:MM:SS'))。与toLowerCase();

这里是工作plunkr。

I am trying to filter date in ngTable based on the given format d MMM yyyy HH:mm:ss. I followed this answer and created a custom filter, but it does not take the given format instead d MMM, yyyy.

How can I have filter on ngTable to filter dates in a given format? Here is my plunker

ngTable

<td data-title="'Start Date'" class="text-center" header-class="text-left" filter="{ 'start_date': 'text' }" sortable="'type'">{{item.start_date| date: 'd MMM yyyy HH:mm:ss'}}</td>
        <td data-title="'End Date'" class="text-center" header-class="text-left" filter="{ 'end_date': 'text' }" sortable="'type'">{{item.end_date| date: 'd MMM yyyy HH:mm:ss'}}</td>

Custom filter

filter('customUserDateFilter', function($filter) {
    return function(values, dateString) {
        var filtered = [];
        if (typeof values != 'undefined' && typeof dateString != 'undefined') {
            angular.forEach(values, function(value) {
                var source = ($filter('date')(value.start_date)).toLowerCase();
                var temp = dateString.toLowerCase();
                //if ($filter('date')(value.start_date).indexOf(dateString) >= 0) {
                //if (temp.indexOf(" ") >=0)
                    //debugger;
                if (source.indexOf(temp) >= 0) {
                    filtered.push(value);
                }
            });
        }
        return filtered;
    }
})

解决方案

You have to be careful when you are changing the format of the date. This is because the filter formats the date which has to be the same format as shown in the table to ensure correct functionality:

var source = ($filter('date')(value.start_date)).toLowerCase();

must be changed to this:

var source = ($filter('date')(value.start_date, 'd MMM yyyy HH:mm:ss')).toLowerCase();

Here is the working plunkr.

这篇关于如何ngTable筛选日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆