AngularJs:以编程方式过滤2列中的任何一列

时间:2015-06-03 18:00:46

标签: javascript angularjs controller filtering

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



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




我希望能够通过键入一些值进行过滤,并在消息列或项目列中进行搜索。根据{{​​3}}它应该可以工作,但它没有,如果我输入可以在消息中找到的东西,它可以工作,但是当我从项中输入内容时,它返回空数组。

你知道我的错误在哪里吗?

1 个答案:

答案 0 :(得分:2)

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

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