Javascript 传递ng repeat变量未定义

Javascript 传递ng repeat变量未定义,javascript,angularjs,Javascript,Angularjs,我正在尝试使用ng repeat使自定义过滤器在角度模式下工作。问题是我的数据传递不正确 我的html: <div class="card" ng-repeat="acqui in acquis | orderBy:'date':true | fieldFilter: this"> 我的过滤器: .filter('fieldFilter', function() { return function(acqui, $scope) { if($scope.f

我正在尝试使用ng repeat使自定义过滤器在角度模式下工作。问题是我的数据传递不正确

我的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;
        }
    }
});
.filter('fieldFilter',function(){
返回函数(acqui$scope){
如果($scope.fieldFilter.length>0){
console.log($scope.fieldFilter);
对于(设i=0;i<$scope.fieldFilter.length;i++){
if(acqui.field===$scope.fieldFilter[i]){
返回acqui;
}
}
}否则{
返回acqui;
}
}
});

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

您不能将整个
$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;
        }
    }
});
.filter('fieldFilter',function(){
//fieldFilter将从`$scope中传递`fieldFilter`对象`
//其中as`acquis`是一个数组。
返回函数(acquis、fieldFilter){
如果(fieldFilter.length>0){
控制台日志(fieldFilter);
for(设i=0;i
继续进行并进行了更改,只是因为这是更好的做法,但并没有解决问题。acqui是未定义的,不是字段过滤器。@Ryan Llaver基本上你会得到
acquis
而不是
acqui
,我现在明白了,所以我必须遍历acquis.length并检查每个acquis.acqui.field?算出了。非常感谢你。