【发布时间】:2015-09-03 21:16:00
【问题描述】:
我有一张包含一些数据的表格。它有姓名、代码、电话等。并且这个表可以有动态字段,基于客户端选项。
我可以找到一个代码让这个搜索忽略标点符号,但它有一些限制。在.filter 上,我需要指定要搜索的字段,所以,因为我的表格是动态的,所以我不知道要显示哪个字段。
这是我正在使用的代码:
app.js
.filter('filterMaster', function() {
return function(items, searchTerm) {
if (!searchTerm || '' === searchTerm) {
return items;
}
searchTerm = searchTerm.replace(/[^\w\s]|_/g, "").toLowerCase();
return items.filter(function(element, index, array) {
var title = element.cod_order.replace(/[^\w\s]|_/g, "").toLowerCase();
return title.indexOf(searchTerm) > -1;
});
}
})
我也尝试使用此代码,我得到了from this answer:
app.js
$scope.ignoreAccents = function(item) {
if (!$scope.searchField)
return true;
var text = removeAccents(item.cod_order.toLowerCase())
var search = removeAccents($scope.searchField.toLowerCase());
return text.indexOf(search) > -1;
};
function removeAccents(value) {
return value
.replace(/á/g, 'a')
.replace(/é/g, 'e')
.replace(/í/g, 'i')
.replace(/ó/g, 'o')
.replace(/[^\w\s]|_/g, "")
.replace(/ú/g, 'u');
};
但同样,如果我没有指定cod_order,或者我想搜索的其他字段,它就不起作用。如果我设置了我想搜索的字段,那么我就无法在表格上的任何其他字段中搜索。
这样做的主要问题是,如果没有在此过滤器中设置,我无法搜索任何其他字段。
有没有办法对其进行优化,使其与表的字段无关?并且不需要指定字段名?
【问题讨论】:
标签: javascript angularjs