Dans mon contrôleur, je peux appeler:
$scope.list[0];
Pour accéder au premier élément de mon tableau. Existe-t-il un moyen de le faire en gardant à l'esprit les filtres.
Par exemple, j'ai:
filter:search
Sur ma répétition, comment puis-je appeler $ scope.list [0]; égaler le premier résultat de recherche?
Cela peut être fait en injectant la dépendance du filtre dans un contrôleur et en l'appelant dans du code comme
var filteredArray = filterDependency(arrayToFilter,args);
qui renvoie un nouveau tableau filtré. Puisque vous utilisez le filtre "filter" (c'est un filtre dont le nom est filter), l'injection de dépendance doit être filterFilter
. Votre contrôleur devrait ressembler à ceci:
var app = angular.module('myapp',[]);
app.controller('ctrlParent',function($scope,filterFilter){
var filteredArray = [];
$scope.list = ["abc","def","ghi","abcdefghi"];
$scope.$watch('search',function(newValue){
filteredArray = filterFilter($scope.list, newValue);
// do something with the first result
console.log(filteredArray[0]); // first result
});
});
Ce que nous faisons est de définir une surveillance sur le modèle d'entrée (search
) afin que nous puissions obtenir la nouvelle valeur et filtrer à nouveau le tableau chaque fois que l'entrée est modifiée.
Aussi :
Si vous devez accéder au ng-repeat
index depuis la vue, vous pouvez utiliser la propriété spéciale $index
à l'intérieur du ng-repeat
comme:
<div ng-repeat="item in list | filter:search">
{{$index}}
</div>
Vous pouvez aussi utiliser $first
, $middle
, et $last
comme indiqué dans ce Angular doc .
Démo : Voici un violon
Pas avec accès au support. Si vous avez un ng-repeat
avec un filtre:
ng-repeat="thing in things | filter:search"
La liste filtrée ici est un peu anonyme - elle n'a pas de nom auquel vous pouvez accéder.
Cela dit, si vous jetez un œil à la docs for ngRepeat , vous verrez qu'à l'intérieur de la portée de chaque répéteur, vous avez accès à $index
, $first
, $middle
, et $last
.
Donc quelque chose comme
<body ng-app="App" ng-controller="Main">
<pre ng-repeat="n in nums | filter:isOdd">
n={{n}}:index={{$index}}:first={{$first}}:middle{{$middle}}:last={{$last}}
</pre>
</body>
Donnerait:
n=1:index=0:first=true:middlefalse:last=false
n=3:index=1:first=false:middletrue:last=false
n=5:index=2:first=false:middlefalse:last=true
Utilisez-vous "ng-repeat"? Si c'est le cas, jetez un œil aux propriétés $ first, $ index, $ middle et $ last. Cela vous permettra d'obtenir des informations sur l'élément spécifique de la répétition.
Pour plus d'informations, consultez ici: http://docs.angularjs.org/api/ng.directive:ngRepeat