Angular UI 网格过滤器仅适用于单元格值的开头
Angular UI Grid filter only applies to beginning of cell value
我在我的应用程序中使用 Angular UI 网格。我在选项中将 enableFiltering
设置为 true
,这使得一些筛选框显示在我的列上方。这很好,但过滤器不能完全按预期工作。
如果单元格包含文本 "I like pizza" 并且我键入 "I like",则该单元格的行显示为匹配项。我还认为,如果我键入 "pizza","I like pizza" cell/row 应该会出现,但事实并非如此。
我怎样才能让过滤器允许搜索文本中的任何地方,而不仅仅是从头开始?
您可以传递一个带有 condition
属性 的自定义过滤器对象,它可以是一个带有 searchTerm
和 cellValue
的函数。如果函数 returns true
将显示。
Plunkr
{ field: 'name', filter: {
condition: function(searchTerm, cellValue) {
return cellValue.indexOf(searchTerm) > -1
}
}}
您可以在列定义中使用 filter: {condition: uiGridConstants.filter.CONTAINS}
以允许该列搜索文本中的任何位置。
这是一个示例列定义:
columnDefs: [
// default
{ field: 'name',
filter: {condition: uiGridConstants.filter.CONTAINS} },
...
我在我的应用程序中使用 Angular UI 网格。我在选项中将 enableFiltering
设置为 true
,这使得一些筛选框显示在我的列上方。这很好,但过滤器不能完全按预期工作。
如果单元格包含文本 "I like pizza" 并且我键入 "I like",则该单元格的行显示为匹配项。我还认为,如果我键入 "pizza","I like pizza" cell/row 应该会出现,但事实并非如此。
我怎样才能让过滤器允许搜索文本中的任何地方,而不仅仅是从头开始?
您可以传递一个带有 condition
属性 的自定义过滤器对象,它可以是一个带有 searchTerm
和 cellValue
的函数。如果函数 returns true
将显示。
Plunkr
{ field: 'name', filter: {
condition: function(searchTerm, cellValue) {
return cellValue.indexOf(searchTerm) > -1
}
}}
您可以在列定义中使用 filter: {condition: uiGridConstants.filter.CONTAINS}
以允许该列搜索文本中的任何位置。
这是一个示例列定义:
columnDefs: [
// default
{ field: 'name',
filter: {condition: uiGridConstants.filter.CONTAINS} },
...