2013-07-15 8 views
0

Ce que je veux faire est de compter la longueur de filtre d'un tableau d'objets par une propriété particulière basée sur la portée du répéteur. Ce code fonctionne sur le plan technique (il affiche le nombre correct du filtre):AngularJS filtre des valeurs exactes avec la longueur

<li ng-repeat="question in questions" id="{{ question.id }}"> 
    {{ question.text }} 
    <ul> 
     <li ng-repeat="answer in question.answers" id="{{ answer.id }}"> 
      {{ answer.text }} (<span ng-controller='AnswersController'>{{ (useranswers|filter:{answer_id:answer.id}).length }}</span>) 
     </li> 
    </ul> 
</li> 

Le problème est, quand ID de champ est 1 (par exemple), il correspond à 1, 10, 11, 21, etc. Je J'aimerais faire le code exact que j'ai au-dessus du travail sur un match exact.

S'il vous plaît laissez-moi savoir ce que le code de soutien serait utile.

+0

Où est le code de comparaison ici? Il se peut que je manque quelque chose (probablement) mais je ne vois pas où vous dites x.indexOf (y) == - 1 ou x == y ou x === y quoi que ce soit de cette nature? – shaunhusain

Répondre

8

Vous devez dire à Angular que vous voulez une comparaison stricte. C'est facile à faire avec Angular 1.1.5, parce que le filtre filter (voir le documentation) a maintenant un troisième paramètre, comparator, où true est un raccourci très utile. Dans votre cas, vous pouvez simplement faire quelque chose comme ça:

<li ng-repeat="question in questions" id="{{ question.id }}"> 
    {{ question.text }} 
    <ul> 
     <li ng-repeat="answer in question.answers" id="{{ answer.id }}"> 
      {{ answer.text }} (<span ng-controller='AnswersController'>{{ (useranswers|filter:{answer_id:answer.id}:true).length }}</span>) 
     </li> 
    </ul> 
</li> 
+0

Réponse parfaite. Merci. –