filtre angular

filtre angular - Javascript/Node.js - Programmation

Marsh Posté le 16-04-2016 à 20:33:36    

salut a tous,  
 
 
Je suis en train de bricoler un custom filter sous angular, dont le but est d'exclure d'un tableau les lignes qui seraient éventuellement d'un autre tableau.
 
pour le moment, j'ai ca.
 
        $scope.test = function(pinpon) {
            $scope.Package.forEach(
                    {
                   function(toto){
                        return (toto.package_id == pinpon.package_id)
                    }}
            )
        };
 
 
pardon pour les noms des variables, ce sera remis au propre qd ca marchera [:dao]
 
les colonnes "package_id" matchent bien, en faisant des alert, ca marche bien.
 
le probleme de ma fonction est de remonter le résultat du return en haut.
mais je n'arrive pas a gérer ca.
 
pourriez vous m'y aider, siouplé ?

Reply

Marsh Posté le 16-04-2016 à 20:33:36   

Reply

Marsh Posté le 16-04-2016 à 21:18:58    

Tu sais aue tu peux faire ton filtre directement dans ton Template:
https://docs.angularjs.org/api/ng/filter/filter#!

Code :
  1. <tr ng-repeat="friend in friends | filter:{package_id: pinpon.package_id}">
  2.    <td>{{friend.name}}</td>
  3.    <td>{{friend.phone}}</td>
  4.  </tr>


sinon, avec une fonction, ça donne ça :

Code :
  1. $scope.test = function(value, index, array){
  2.   return value.package_id === pinpon.package_id
  3. }


Citation :

A predicate function can be used to write arbitrary filters. The function is called for each element of the array, with the element, its index, and the entire array itself as arguments.

 

The final result is an array of those elements that the predicate returned true for.

 



Message édité par flo850 le 16-04-2016 à 21:19:13

---------------

Reply

Marsh Posté le 16-04-2016 à 21:27:06    

ok, merci, je vais voir ca en rentrant.
 
value, index et array, sont supposés correspondre a quoi ?
 
je dois les remplacer par des noms de variables de mon code ?  je comprend pas a quoi ca correspond,  
 
a ma décharge, j'ai jamais rien utilisé d'aussi illisible que JS :o

Reply

Marsh Posté le 16-04-2016 à 21:31:12    

value, index et array sont les paramètres qui sont passé à la fonction de filtre. Tu peux t'en servir pour savoir si tu dois conserver ou non les éléments. Par exemple si tu ne voulais garder que les éléments pairs, tu reggarderai la valeur de index%2. Si tu ne voulais garder que les éléments présent plusieurs fois dans le tableau, tu comparerai value et le reste de array,...

  

cette fonction est appellé pour chaque élément de ta collection package, à chaque $digest.

 

Je te conseille https://developer.mozilla.org/en-US [...] JavaScript, si tu veux sécuriser tes connaissance en JS pur. Pour angular, il y a des millions de tutos

Message cité 1 fois
Message édité par flo850 le 16-04-2016 à 21:32:44

---------------

Reply

Marsh Posté le 16-04-2016 à 21:34:24    

flo850 a écrit :

value, index et array sont les paramètres qui sont passé à la fonction de filtre. Tu peux t'en servir pour savoir si tu dois conserver ou non les éléments. Par exemple si tu ne voulais garder que les éléments pairs, tu reggarderai la valeur de index%2. Si tu ne voulais garder que les éléments présent plusieurs fois dans le tableau, tu comparerai value et le reste de array,...

  

cette fonction est appellé pour chaque élément de ta collection package, à chaque $digest.

 

Je te conseille https://developer.mozilla.org/en-US [...] JavaScript, si tu veux sécuriser tes connaissance en JS pur. Pour angular, il y a des millions de tutos


Sécuriser [:ddr555]

 

C'est cute :o

 

Merci !! Je vais lire ca

Reply

Marsh Posté le 16-04-2016 à 23:48:11    

comment je lui dis dans quel array rechercher avec ta fonction ?

Reply

Marsh Posté le 17-04-2016 à 14:06:30    

Dans l'exemple que je te donnes, il filtrera à partir du tableau qui est dans scope.packages, grace au ng-repeat

 

controlleur :

Code :
  1. $scope.packages= [/*ta collection*/];
  2. $scope.myFabulousFilter= function(value, index, array){
  3.   return value.package_id === pinpon.package_id
  4. };


Code :
  1. <tr ng-repeat="package in packages | filter:myFabulousFilter ">
  2.    <td>{{friend.name}}</td>
  3.    <td>{{friend.phone}}</td>
  4.  </tr>


Message édité par flo850 le 17-04-2016 à 14:07:49

---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed