Javascript 传递ng repeat变量未定义
我正在尝试使用ng repeat使自定义过滤器在角度模式下工作。问题是我的数据传递不正确 我的html: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
<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?算出了。非常感谢你。