在我的应用程序中,我使用Angular ui-grid以网格格式显示数据集。我想根据名为actionDate
的日期字段过滤这些数据。我想过滤actionDate
为null
或not null
的数据。我使用一个简单的下拉列表来选择它。
但是当此actionDate
字段不为空时,过滤不起作用。我认为这不起作用的原因是actionDate
字段具有不同的值,并且ui-grid过滤器无法理解这一点。
我在下面的plunker中重现了这个问题。 http://plnkr.co/edit/8rIJeA92hDYQ9vHDUC1C?p=preview
感谢是否有人能指出我正确的方向。
答案 0 :(得分:2)
我已在this fork of your plunker修复了您的问题。
更新:好的,我使用的解决方案是在dateActionedKey
的末尾添加一个名为colDefs
的隐藏列:
{
field: 'dateActionedKey',
filter: {
term: $scope.term
},
visible: false
}
问题在于您是按照事后指定的属性过滤了该列 - 如果没有actionDate
,则值为' 1',否则值为actionDate
- 但您的过滤器选择器按id
过滤,查找值' 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;
希望这会对你有所帮助。