【发布时间】:2015-08-08 16:37:30
【问题描述】:
我仍在学习 Angular/ui-grid 并陷入困境,希望有人能指出我正确的方向。当你设置你的网格时,你可以打开过滤:
$scope.gridOptions.enableFiltering = true;
然后在 columnDefs 中,当您定义网格时,您可以使用各种测试(等于、包含、精确、小于等)打开列过滤,或者自己制作 - 即您甚至可以定义自己的布尔函数来驱动每行的通过/失败,以获得所需的过滤逻辑。这是一个典型的例子:
{
field: 'phone',
filter: {
condition: function(searchTerm, cellValue) {
var strippedValue = (cellValue + '').replace(/[^\d]/g, '');
return strippedValue.indexOf(searchTerm) >= 0;
}
},
但是这种过滤逻辑能力似乎都特定于一列。那么,如果您有一个跨字段的过滤测试(简单示例:字段 A = 字段 B 吗?)甚至可能是跨行(即我实际上有一个案例,我跨 sets 进行复杂测试 of rows 来确定应该过滤哪些行)。 是否有一种标准方法可以进行这种更全局的过滤?
通过将计算的包含/排除结果保存在实际未显示的隐藏列中,我已经接近解决方案,但我似乎无法让 ui-grid 实际在隐藏列上执行过滤器功能.这引发了一个相关问题:如何强制执行过滤操作(因为我想从不属于网格的控件触发)?
我试图把一个更简单的情况放在一起(A = B 吗?):http://plnkr.co/edit/a0BJZVOGGIyP4Q4hxVob?p=preview
我认为,如果我了解如何使这项工作发挥作用,那么答案也许也可以回答(或使没有实际意义)问题的动态方面(如何在需要时强制执行过滤器操作)。
感谢您的帮助
【问题讨论】: