AngularJs:通过2列中的任意一列进行编程过滤

AngularJs: programmatically filter by either of 2 columns

本文关键字:编程 过滤 任意一 通过 2列 AngularJs      更新时间:2023-09-26

我有以下代码在我的控制器:

$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 }));
}

我希望能够通过键入一些值进行过滤,并在消息列或项目列中进行搜索。根据如何过滤多个值(或操作)在angularJS它应该工作,但它没有,如果我键入的东西,可以在消息中找到,它的工作,但当我从项目中键入的东西,它返回空数组。

你知道我错在哪里了吗?

更新删除不相关/错误的初始答案

由于您在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的功能和/或不是您想要的,您可以相应地调整代码。