AngularJs:以编程方式按 2 列之一过滤
AngularJs: programmatically filter by either of 2 columns
我的控制器中有以下代码:
$scope.filteredTransactions = $scope.invoiceTransactionsObject.transactions.concat(); // make a copy of the initial array
if ($scope.searchTerm.message)
{
var search = $scope.searchTerm.message;
$scope.filteredTransactions = $filter('filter')($scope.filteredTransactions, ({ message: search } || { item: search }));
}
我希望能够通过键入一些值进行过滤,然后在消息列或项目列中进行搜索。根据 How to filter multiple values (OR operation) in angularJS 它应该工作,但它不工作,如果我键入可以在消息中找到的内容,它就可以工作,但是当我从项目中键入内容时,它 returns 空数组。
你看出我错在哪里了吗?
更新删除irrelevant/mistaken初步回答
由于您在 JS 脚本中应用 $filter,并且它不使用 $filter 的任何高级功能,因此我将切换到过滤数组的 JS 原生方法:
$scope.filteredTransactions = $scope.invoiceTransactionsObject.transactions.concat(); // make a copy of the initial array
if ($scope.searchTerm.message)
{
var search = $scope.searchTerm.message;
$scope.filteredTransactions = $scope.filteredTransactions.filter(function (trans) {
return trans.message.toLowerCase().indexOf(search) >= 0 || trans.item.toLowerCase().indexOf(search) >= 0;
});
}
...假设 $filter 不区分大小写并且匹配字符串中的任何位置。如果这不是 $filter and/or 的功能而不是您想要的,您将相应地调整代码。
我的控制器中有以下代码:
$scope.filteredTransactions = $scope.invoiceTransactionsObject.transactions.concat(); // make a copy of the initial array
if ($scope.searchTerm.message)
{
var search = $scope.searchTerm.message;
$scope.filteredTransactions = $filter('filter')($scope.filteredTransactions, ({ message: search } || { item: search }));
}
我希望能够通过键入一些值进行过滤,然后在消息列或项目列中进行搜索。根据 How to filter multiple values (OR operation) in angularJS 它应该工作,但它不工作,如果我键入可以在消息中找到的内容,它就可以工作,但是当我从项目中键入内容时,它 returns 空数组。
你看出我错在哪里了吗?
更新删除irrelevant/mistaken初步回答
由于您在 JS 脚本中应用 $filter,并且它不使用 $filter 的任何高级功能,因此我将切换到过滤数组的 JS 原生方法:
$scope.filteredTransactions = $scope.invoiceTransactionsObject.transactions.concat(); // make a copy of the initial array
if ($scope.searchTerm.message)
{
var search = $scope.searchTerm.message;
$scope.filteredTransactions = $scope.filteredTransactions.filter(function (trans) {
return trans.message.toLowerCase().indexOf(search) >= 0 || trans.item.toLowerCase().indexOf(search) >= 0;
});
}
...假设 $filter 不区分大小写并且匹配字符串中的任何位置。如果这不是 $filter and/or 的功能而不是您想要的,您将相应地调整代码。