Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS过滤器(对象和多个值)不工作_Angularjs_Angular Ui Router_Angularjs Filter - Fatal编程技术网

AngularJS过滤器(对象和多个值)不工作

AngularJS过滤器(对象和多个值)不工作,angularjs,angular-ui-router,angularjs-filter,Angularjs,Angular Ui Router,Angularjs Filter,所以我得到了一个使用AngularJS和UI路由器的项目,我迭代了一个json,它有一个名为“state”的属性,我想用它作为过滤器,但是,我将使用一个“选择器”,在这里我可以选择“All”或一个特定的 我是AngularJS的新手,所以不确定到底是什么不起作用,这是我到目前为止的代码: function filterState (installment){ switch(selectedValue) { case 1: if(installmen

所以我得到了一个使用AngularJS和UI路由器的项目,我迭代了一个json,它有一个名为“state”的属性,我想用它作为过滤器,但是,我将使用一个“选择器”,在这里我可以选择“All”或一个特定的

我是AngularJS的新手,所以不确定到底是什么不起作用,这是我到目前为止的代码:

function filterState (installment){
    switch(selectedValue) {
        case 1:
            if(installment.state === 'PAID'){
                return installment;
            }
            break;
        case 2:
            if(installment.state === 'LATE'){
                return installment;
            }
            break;
        case 3:
            if(installment.state === 'PENDING'){
                return installment;
            }
            break;
        default:
            return installment;
    }
但是,过滤器没有正常工作 我这样称呼它:

<div class="row" ng-repeat="installment in vm.clients.installments | filter: filterState">

不确定当我手动按值筛选(如筛选:{state:'PAID'})时,错误到底是什么
它工作

过滤器函数返回迭代器函数。比如回调。请检查下面的示例

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.criteria = { name: 'Bob'};

  $scope.criteriaMatch = function( criteria ) {
    return function( item ) {
      return item.name === criteria.name;
    };
  };

  $scope.items =[
    { name: 'Bob'},
    { name: 'Alice'}
  ];
});

{{item}}


信用:匿名

如果您需要使用选择选项进行筛选,则可以执行以下操作:

<select name="select" id="select" ng-model="clients.status">
    <option value="PAID">PAID</option>
    <option value="LATE">LATE</option>
    <option value="PENDING">PENDING</option>
    <option value="ALL">ALL</option>
</select>
<div class="row" ng-repeat="installment in clients.installments | filter: filterState">
    {{installment.id}}
</div>
选择选项
ALL
时,将显示列表中的所有项目


检查此处的工作演示:

显然,我需要返回一个布尔值而不是对象,我以前确实尝试过,但我的另一个问题是,我直接调用函数,而不是执行vm.function(一旦传递到上下文),在执行该操作后,它工作正常。

什么是
selectedValue
?您是否有
select
控件?selectedValue在这种情况下并不相关,我现在使用的是一个硬编码变量。是否要使用下拉列表中的选定值进行筛选?
$scope.filterState = function(installment) {
    if ($scope.clients.status === 'ALL') return true;
    return $scope.clients.status === installment.status;
};