114 votes

En Angular, j'ai besoin de rechercher des objets dans un tableau.

Dans Angular, j'ai un objet qui renvoie des tas d'objets ayant chacun une idée (ceci est stocké dans un fichier plat, donc pas de base de données, et je ne semble pas pouvoir utiliser ng-resource Dans mon contrôleur :

$scope.fish = [{category:'freshwater', id:'1', name: 'trout', more:'false'},  {category:'freshwater', id:'2', name:'bass', more:'false'}]

Dans ma vue, j'ai des informations supplémentaires sur le poisson cachées par défaut avec le ng-show more, mais lorsque je clique sur l'onglet simple show more, je voudrais appeler la fonction showdetails(fish.fish_id) . Ma fonction ressemblerait à quelque chose comme :

$scope.showdetails = function(fish_id){  
var fish = $scope.fish.get({id: fish_id}) fish.more = true }}

Maintenant, dans la vue, plus de détails apparaissent. Cependant, après avoir parcouru la documentation, je n'arrive pas à trouver comment rechercher ce tableau de poissons.

Alors comment puis-je interroger le tableau ? Et dans la console, comment puis-je appeler le débogueur pour avoir la $scope objet pour jouer avec ?

7voto

Michał Jarzyna Points 702

Vos solutions sont correctes mais inutilement compliquées. Vous pouvez utiliser fonction de filtre en javascript pur . C'est votre modèle :

     $scope.fishes = [{category:'freshwater', id:'1', name: 'trout', more:'false'},  {category:'freshwater', id:'2', name:'bass', more:'false'}];

Et c'est votre fonction :

     $scope.showdetails = function(fish_id){
         var found = $scope.fishes.filter({id : fish_id});
         return found;
     };

Vous pouvez également utiliser l'expression :

     $scope.showdetails = function(fish_id){
         var found = $scope.fishes.filter(function(fish){ return fish.id === fish_id });
         return found;
     };

En savoir plus sur cette fonction : LIEN

4voto

Ogglas Points 1

J'ai vu ce fil de discussion mais j'ai voulu rechercher des identifiants qui ne correspondaient pas à ma recherche. Code pour le faire :

found = $filter('filter')($scope.fish, {id: '!fish_id'}, false);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X