传递ng-repeat变量未定义

时间:2016-08-17 21:42:12

标签: javascript angularjs

我正在尝试使用ng-repeat在Angular中使用自定义过滤器。问题是我的数据没有正确传递。

我的HTML:

<div class="card" ng-repeat="acqui in acquis | orderBy:'date':true | fieldFilter: this">

我的过滤器:

.filter('fieldFilter', function() {
    return function(acqui, $scope) {
        if($scope.fieldFilter.length > 0) {
            console.log($scope.fieldFilter);
            for(let i = 0; i < $scope.fieldFilter.length; i++) {
                if(acqui.field === $scope.fieldFilter[i]) {
                    return acqui;
                }
            }
        } else {
            return acqui;
        }
    }
});

我试图将ng-repeat中的acqui与$ scope变量进行比较,但由于某些原因acqui.field未定义,我真的不知道该尝试什么,即使我确定它是什么简单。

1 个答案:

答案 0 :(得分:2)

你无法将整个$scope传递给你的角度过滤器(尽管想到它会是不好的方法)。您可以通过在过滤器名称后面提到它来传递过滤后的对象。

ng-repeat="acqui in acquis | orderBy:'date':true | fieldFilter: fieldFilter"

过滤

.filter('fieldFilter', function() {
    //fieldFilter will have passed `fieldFilter` object from `$scope`
    //where as `acquis` is an array.
    return function(acquis, fieldFilter) {
        if(fieldFilter.length > 0) {
            console.log(fieldFilter);
            for(let i = 0; i < fieldFilter.length; i++) {
                //here you have `acquis` not acqui
                //if(acqui.field === fieldFilter[i]) {
                //    return acqui;
                //}
            }
        } else {
            return acqui;
        }
    }
});