IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AngularJS Discussion :

Filtre JS tableau de données


Sujet :

AngularJS

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Filtre JS tableau de données
    Bonjour,

    J'essaye de mettre en place le Framework Angular JS sur mon projet, mais ce n'est pas évident quand on est 0 en JS.

    le but étant d'afficher un tableau d'objet, par exemple des personnes avec comme attribut nom, age, etc...
    Au dessus de mon tableau, j'ai une barre de recherche comportant toutes les lettres de l'alphabet. J'aimerai lorsque je clique sur une lettre, afficher uniquement les personnes dont le nom commence par cette lettre.

    exemple .html

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
    	<td> <button type="button" class="btn btn-info" ng-click="filtreByLetter('A')">A</button></td>
    	<td> <button type="button" class="btn btn-info" ng-click="filtreByLetter('B')">B</button></td>
    	<td> <button type="button" class="btn btn-info" ng-click="filtreByLetter('C')">C</button></td>
    </tr>

    Comment puis-je filtrer mes données sur la 1ere lettre uniquement???


    J'arrive enfin a effectuer un filtre sur le nom de mes personnes. Mais je filtre sur le nom complet et non sur la 1ere lettre.
    Lorsque je clique sur le boutton 'A', je récupere tout les noms qui contiennent la lettre 'A'.

    fonction en JS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        $scope.filtreByLetter = function(letter){
        	$scope.personnes =  $scope.personnesCopy;
        	$scope.personnes =  $filter('filter')($scope.personnes, letter);
        };

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    en js pur j'avais proposé ce code
    http://www.developpez.net/forums/d10...eurs-colonnes/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Dans ton exemple on ne sait pas comment est construit ton tableau, normalement ça devrait être avec un ng-repeat.

    Pour la mise en place de filtres simple tu as cet exemple.

    Sinon pour créer soi-même ses propres filtres tu as un exemple dans le tutorial d'angular.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci pour les réponses, mon problème est résolu, il est très difficile d'utiliser AngularJS lorqu'on a jamais fait de JavaScript.
    Par contre,je pense qu'il est sage de ne pas utiliser de JQuery avec AngularJS.

    Pour les curieux, voici ce que j'ai fait.

    layout.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <table id="recherche">
    <tr>
    	<td> <button type="button"  ng-click="filterByLetter('A')">A</button></td>
    	<td> <button type="button"  ng-click="filterByLetter('B')">B</button></td>
    </tr>
    </table> 
    ...
    <table>
       <th></th>
       ...
      <tr ng-repeat="personne in personnes| orderBy:predicate:reverse | filter:byFirstLetter">
                <td>{{personne.name}}</td>
                <td>{{personne.id}}</td>
      </tr>
    </table>
    script.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
              $scope.filterByLetter = function(letter){
    	    	$scope.currentLetter = letter;
    	    };
     
    	  $scope.byFirstLetter = function(personne){
    	    return personne.name[0].toUpperCase() === $scope.currentLetter;	
    	  };
    Donc si j'ai bien compris, pour résumer, lorsque je clique sur un boutton (exemple: A), j'appel la fonction JS "filterByLetter", celle-ci modifie $scope.currentLetter. qui lui est appeler dans le filtre"byFirstLetter". Comme ce filtre définit mon tableau, AngularJS le met a jour automatiquement.

  5. #5
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par Rhumario Voir le message
    il est très difficile d'utiliser AngularJS lorqu'on a jamais fait de JavaScript.
    Oui il est conseillé de revoir les bases du js avant de se taper Angular.

    Citation Envoyé par Rhumario Voir le message
    Par contre,je pense qu'il est sage de ne pas utiliser de JQuery avec AngularJS.
    Oui surtout au début. Après on peut en avoir besoin des choses spécifiques, et surtout on sait quand et comment l'utiliser.

    Citation Envoyé par Rhumario Voir le message
    Donc si j'ai bien compris, pour résumer, lorsque je clique sur un boutton (exemple: A), j'appel la fonction JS "filterByLetter", celle-ci modifie $scope.currentLetter. qui lui est appeler dans le filtre"byFirstLetter". Comme ce filtre définit mon tableau, AngularJS le met a jour automatiquement.
    Oui c'est l'idée. Toute modification du scope entraîne une mise à jour de la vue.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

Discussions similaires

  1. [MySQL] Filtre MySQL/PHP dans tableau de données
    Par robinmaret dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/12/2009, 21h02
  2. exporter un tableau de donnée vers un document word
    Par demerzel0 dans le forum Access
    Réponses: 2
    Dernier message: 04/11/2005, 11h57
  3. Filtrer un tableau de données
    Par Yux dans le forum Langage
    Réponses: 12
    Dernier message: 13/10/2005, 22h21
  4. [VB.NET] filtre dans base de donnée
    Par speedtug dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/09/2005, 17h12
  5. [Collections] Transformer un tableau de données en une chaîne
    Par NATHW dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2004, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo