【问题标题】:Angular ui-grid filtering based on date is null or not null基于日期的角度 ui-grid 过滤为空或非空
【发布时间】:2016-02-20 11:49:42
【问题描述】:

在我的应用程序中,我使用 Angular ui-grid 以网格格式显示数据集。我想根据名为 actionDate 的日期字段过滤这些数据。我想过滤actionDatenullnot null 的数据。我正在使用一个简单的下拉菜单来选择它。

但是当 actionDate 字段不为 null 时,过滤不起作用。我认为这不起作用的原因是 actionDate 字段具有不同的值,并且 ui-grid 过滤器无法理解。

我已在以下 plunker 中重现了此问题。 http://plnkr.co/edit/8rIJeA92hDYQ9vHDUC1C?p=preview

如果有人能指出我正确的方向,不胜感激。

【问题讨论】:

    标签: javascript angularjs ng-grid angular-ui-grid angular-filters


    【解决方案1】:

    我在this fork of your plunker 中解决了您的问题。

    更新:好的,我采用的解决方案是在 colDefs 的末尾添加一个名为 dateActionedKey 的隐藏列:

    { 
       field: 'dateActionedKey', 
       filter: {
         term: $scope.term
       }, 
       visible: false 
    }
    

    问题在于,您是通过事后分配的属性过滤列——如果没有actionDate,则值为“1”,否则值为actionDate——但您的过滤器选择器过滤器是@ 987654327@,查找值“1”或“2”。

    因此,您需要将 forEach 函数从:

    _.forEach(data, function (value) {
        value.dateActioned = value.dateActioned===null ? '1' : value.dateActioned;
    });
    

    到:

    _.forEach(data, function (value) {
        value.dateActionedKey = value.dateActioned===null ? '1' : '2';
    });
    

    通过添加额外的属性dateActionedKey,您可以为其分配二进制 1 或 2 值,而显示中没有任何变化。由于这个不可见的列现在是七个列中的最后一个,您需要将过滤器术语分配更新为:

    $scope.gridApi.grid.columns[6].filter.term = $scope.term;
    

    希望对你有所帮助。

    【讨论】:

    • 这正是我正在寻找的解决方案。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2015-12-17
    相关资源
    最近更新 更多