ng-repeat filter

1

Good afternoon, my problem is as follows I have the following information.

  <div ng-init='programa=
                  {"cuatrimestres":
                  [
                  {"1":
                      [{"id":"1","codigo":"IF001","Descripcion":"Elementos De Informatica","carrera_id":"1","cuatrimestre":"1","correlativas":"No Tiene","estado":"Aprobado"},{"id":"2","codigo":"IF002","Descripcion":"Expresion de Problemas y Algoritmos","carrera_id":"1","cuatrimestre":"1","correlativas":"No Tiene","estado":"Sin Datos"},{"id":"3","codigo":"MA045","Descripcion":"Algebra","carrera_id":"1","cuatrimestre":"1","correlativas":"No Tiene","estado":"Sin Datos"}],
                  "2":
                      [{"id":"4","codigo":"IF003","Descripcion":"Algoritmica y Programacion 1","carrera_id":"1","cuatrimestre":"2","correlativas":[{"codigo":"IF002","estado":"Sin Datos"}],"estado":"Sin Datos"},{"id":"5","codigo":"MA008","Descripcion":"Elementos de Logica y Matematica Discreta","carrera_id":"1","cuatrimestre":"2","correlativas":"No Tiene","estado":"Sin Datos"},{"id":"6","codigo":"MA046","Descripcion":"Analisis Matematico","carrera_id":"1","cuatrimestre":"2","correlativas":"No Tiene","estado":"Sin Datos"}],
                  "3":
                    [{"id":"7","codigo":"IF004","Descripcion":"Sistemas y Organizaciones","carrera_id":"1","cuatrimestre":"3","correlativas":"No Tiene","estado":"Sin Datos"},{"id":"8","codigo":"IF005","Descripcion":"Arquitectura de Computadoras","carrera_id":"1","cuatrimestre":"3","correlativas":[{"codigo":"IF001","estado":"Aprobado"}],"estado":"Sin Datos"},{"id":"9","codigo":"IF006","Descripcion":"Algoritmica y Programacion 2","carrera_id":"1","cuatrimestre":"3","correlativas":[{"codigo":"IF003","estado":"Sin Datos"},{"codigo":"MA008","estado":"Sin Datos"}],"estado":"Sin Datos"},{"id":"10","codigo":"MA006","Descripcion":"Estadistica","carrera_id":"1","cuatrimestre":"3","correlativas":[{"codigo":"MA045","estado":"Sin Datos"},{"codigo":"MA046","estado":"Sin Datos"}],"estado":"Sin Datos"}],
                  "4":
                    [{"id":"11","codigo":"IF007","Descripcion":"Base de Datos 1","carrera_id":"1","cuatrimestre":"4","correlativas":[{"codigo":"IF006","estado":"Sin Datos"}],"estado":"Sin Datos"},{"id":"12","codigo":"IF030","Descripcion":"Programacion y Dise\u00f1o Orientado a Objetos","carrera_id":"1","cuatrimestre":"4","correlativas":[{"codigo":"IF006","estado":"Sin Datos"}],"estado":"Sin Datos"},{"id":"13","codigo":"IF031","Descripcion":"Ingenieria de Software","carrera_id":"1","cuatrimestre":"4","correlativas":[{"codigo":"IF003","estado":"Sin Datos"},{"codigo":"IF004","estado":"Sin Datos"}],"estado":"Sin Datos"}],
                  "5":[],
                  "6":[],
                  "7":[],
                  "8":[],
                  "9":[],
                  "10":[]
                  }
                  ]
                  }
                  '>

When I do the ng-repeat with filter it does not filter the data to me as I hope, when placing one

<label>Search: <input ng-model="searchText"></label>

the data to show would be

{"1":
                      [{"id":"1","codigo":"IF001","Descripcion":"Elementos De Informatica","carrera_id":"1","cuatrimestre":"1","correlativas":"No Tiene","estado":"Aprobado"},{"id":"2","codigo":"IF002","Descripcion":"Expresion de Problemas y Algoritmos","carrera_id":"1","cuatrimestre":"1","correlativas":"No Tiene","estado":"Sin Datos"},{"id":"3","codigo":"MA045","Descripcion":"Algebra","carrera_id":"1","cuatrimestre":"1","correlativas":"No Tiene","estado":"Sin Datos"}],



    <table id="searchTextResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="cuatrimestre in programa.cuatrimestres  | filter:{friend:searchText}">
    <td>{{cuatrimestre }}</td>
  </tr>

en donde estaria mi error muchas gracias
</table>
    
asked by Matias 28.08.2017 в 17:31
source

2 answers

1

first of all you must understand the structure of your array of objects:

In the first level you have a program containing an object with a single attribute "cuatrimestres", until then everything is ok.

In the second level you have "quarters" as an array of a single object, this will make your ng-repeat just iterate an object.

In third level is the only object within the quadrimester array, this is the point where you should iterate and filter with the ng-repeat, but the next level tells us that the filter is not done at this level.

In fourth level you have another array with multiple objects which indicates that you would have to nest a second ng-repeat with filter to search all the results at this point.

%pr_e%

As an observation that array object of array objects is very poorly constituted it would be good practice to place yourself in agreement with whoever built it so as not to cause that kind of headaches

I leave the link for you to try it: link

    
answered by 28.08.2017 / 19:46
source
0

var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
  $scope.programa = [
     {
    "cuatrimestres": [{
        "1": [{
            "id": "1",
            "codigo": "IF001",
            "Descripcion": "Elementos De Informatica",
            "carrera_id": "1",
            "cuatrimestre": "1",
            "correlativas": "No Tiene",
            "estado": "Aprobado"
        }, {
            "id": "2",
            "codigo": "IF002",
            "Descripcion": "Expresion de Problemas y Algoritmos",
            "carrera_id": "1",
            "cuatrimestre": "1",
            "correlativas": "No Tiene",
            "estado": "Sin Datos"
        }, {
            "id": "3",
            "codigo": "MA045",
            "Descripcion": "Algebra",
            "carrera_id": "1",
            "cuatrimestre": "1",
            "correlativas": "No Tiene",
            "estado": "Sin Datos"
        }],
        "2": [{
            "id": "4",
            "codigo": "IF003",
            "Descripcion": "Algoritmica y Programacion 1",
            "carrera_id": "1",
            "cuatrimestre": "2",
            "correlativas": [{
                "codigo": "IF002",
                "estado": "Sin Datos"
            }],
            "estado": "Sin Datos"
        }, {
            "id": "5",
            "codigo": "MA008",
            "Descripcion": "Elementos de Logica y Matematica Discreta",
            "carrera_id": "1",
            "cuatrimestre": "2",
            "correlativas": "No Tiene",
            "estado": "Sin Datos"
        }, {
            "id": "6",
            "codigo": "MA046",
            "Descripcion": "Analisis Matematico",
            "carrera_id": "1",
            "cuatrimestre": "2",
            "correlativas": "No Tiene",
            "estado": "Sin Datos"
        }],
        "3": [{
            "id": "7",
            "codigo": "IF004",
            "Descripcion": "Sistemas y Organizaciones",
            "carrera_id": "1",
            "cuatrimestre": "3",
            "correlativas": "No Tiene",
            "estado": "Sin Datos"
        }, {
            "id": "8",
            "codigo": "IF005",
            "Descripcion": "Arquitectura de Computadoras",
            "carrera_id": "1",
            "cuatrimestre": "3",
            "correlativas": [{
                "codigo": "IF001",
                "estado": "Aprobado"
            }],
            "estado": "Sin Datos"
        }, {
            "id": "9",
            "codigo": "IF006",
            "Descripcion": "Algoritmica y Programacion 2",
            "carrera_id": "1",
            "cuatrimestre": "3",
            "correlativas": [{
                "codigo": "IF003",
                "estado": "Sin Datos"
            }, {
                "codigo": "MA008",
                "estado": "Sin Datos"
            }],
            "estado": "Sin Datos"
        }, {
            "id": "10",
            "codigo": "MA006",
            "Descripcion": "Estadistica",
            "carrera_id": "1",
            "cuatrimestre": "3",
            "correlativas": [{
                "codigo": "MA045",
                "estado": "Sin Datos"
            }, {
                "codigo": "MA046",
                "estado": "Sin Datos"
            }],
            "estado": "Sin Datos"
        }],
        "4": [{
            "id": "11",
            "codigo": "IF007",
            "Descripcion": "Base de Datos 1",
            "carrera_id": "1",
            "cuatrimestre": "4",
            "correlativas": [{
                "codigo": "IF006",
                "estado": "Sin Datos"
            }],
            "estado": "Sin Datos"
        }, {
            "id": "12",
            "codigo": "IF030",
            "Descripcion": "Programacion y Dise\u00f1o Orientado a Objetos",
            "carrera_id": "1",
            "cuatrimestre": "4",
            "correlativas": [{ 
                "codigo": "IF006",
                "estado": "Sin Datos"
            }],
            "estado": "Sin Datos"
        }, {
            "id": "13",
            "codigo": "IF031",
            "Descripcion": "Ingenieria de Software",
            "carrera_id": "1",
            "cuatrimestre": "4",
            "correlativas": [{
                "codigo": "IF003",
                "estado": "Sin Datos"
            }, {
                "codigo": "IF004",
                "estado": "Sin Datos"
            }],
            "estado": "Sin Datos"
        }]
    }]
    }
  ]
});
<!doctype html>
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
    <script src="script.js"></script>

  </head>
  <body ng-app="myApp" ng-controller="myCtrl">
      <label>Search: <input ng-model="searchText" placeholder="search"></label>

      <table ng-repeat="cuatrimestre in programa[0].cuatrimestres[0]">
        <tr ng-repeat="elemento in cuatrimestre | filter:searchText">
           <td> {{ elemento }}</td>
        </tr>
        </table>
  </body>
</html>

You have an object that behaves like an array inside another array, maybe this can give you a solution.

    
answered by 28.08.2017 в 19:29