От ng-repeat в <tr>не принимается параметр в пользовательском фильтре - PullRequest
2 голосов
/ 12 апреля 2020

В моем приложении я повторяю массив с ng-repeat и показываю значения в формате табулера. Теперь я хочу передать пользовательский фильтр, который должен принимать аргумент из повторного массива. Я делаю это следующим образом:

<tr   ng-repeat="arrList in records.actualList|geneFilter:arrList.selectedArr">

'selectedArr' находится под 'actualList', а записи - это родительский массив.

Теперь в моем пользовательском фильтре:

"use strict";
var portalApp = angular.module('filter', []);
portalApp.filter('geneFilter', function() {
    return function(input,changedArr){
        var out=[];
        var selectedArr='';
        console.log('changed Arr::'+changedArr);

        return selectedArr;

    }
});

В пользовательском фильтре я всегда получаю измененное значение arr как 'undefined'.

1 Ответ

1 голос
/ 12 апреля 2020

Мне очень любопытно, как это должно работать вообще!

у нас есть cycli c зависимость , здесь. Это причина, по которой вы получаете undefined

arrList.selectedArr - это результат того, что вы возвращаете в свой фильтр, который должен быть return out, а не return selectedArr

<tr ng-repeat="arrList in records.actualList|geneFilter:arrList.selectedArr"> 

Давайте попробуйте описать, что у нас есть:

Я фильтрую records.actualList по пользовательскому фильтру с именем geneFilter, который получает в качестве аргумента результат фильтра - arrList, ae arrList.selectedArr на основе отфильтрованных данных


Вот как я это вижу, чтобы заставить его работать:

<tr ng-repeat="item in records.actualList|geneFilter:types">

и

portalApp.filter('geneFilter', function() {
    return function(input,someTypes){
        var out=[];

        angular.forEach(input, function(item) {
          if(someTypes == "some info") {
             out.push(item);
           }        
       });

        return out;
    }
});
  • здесь input на самом деле records.actualList
  • out - массив как результат, возвращаемый из фильтра. Таким образом, вы можете написать свое собственное условие, как его фильтровать
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...