web-dev-qa-db-fra.com

Comparaison de chaînes dans AngularJS

J'essaie de comparer deux chaînes dans AngularJS, et j'ai vu des exemples en ligne. Si je comprends bien, vous pouvez utiliser angular.equals (str1, str2), vous pouvez utiliser ===, vous pouvez utiliser == si vous êtes sûr que ce sont deux chaînes ...

J'ai essayé les trois, mais je n'ai pas le résultat. Quelque chose ne va pas dans ce que j'ai fait, mais je ne sais pas ce que c'est. 

Lorsque je lance le code, la fonction inc1 () est appelée. La première alerte apparaît "inc1 appelé". Mais la deuxième alerte, "Inside for loop", ne s'exécute qu'une fois. Il devrait exécuter deux fois, n'est-ce pas?

Et l'alerte à l'intérieur de la si (condition) ne s'exécute pas du tout. Si je supprime le bloc 'if', l'alerte "Inside for loop" est exécutée deux fois.

Je serais très obligé si quelqu'un pouvait me dire ce que je faisais mal ici. J'ai utilisé angular.equals (), === et ==, mais la même chose se produit à chaque fois. 

Voici comment vont les codes HTML et AngularJS:

HTML:

<a class="tab-item" ng-repeat = "x in items" ng-if="name==x.names" ng-click="inc1(name)">
  <i class="icon ion-thumbsup"></i>
  Like
 </a> 

AngularJS:

$rootScope.items = [
{ id: 1, names: 'Dolphin', image: 'dolphin.jpg'}, { id: 2, names: 'Donkey', image: 'donkey.jpg'}];

$scope.inc1 = function(name) {

alert("inc1 called");
for(var i=0;i<$rootScope.items.length;i++)
{
    alert("Inside for loop");
    if (name === $rootScope.items.names[i])
        {
        alert("If condition satisfied");
        }
}
}

// Dites, mon nom est 'Dolphin'

5
Anusha

Vous parcourez le mauvais noeud :)

for(var i=0;i<$rootScope.items.length;i++)
{
    alert("Inside for loop");
    if (name === $rootScope.items[i].names) // you iterate over items, not names, which it an Json property inside item
        {
        alert("If condition satisfied");
        }
}
6
Beri

Vous devriez comparer avec $ rootScope.items [i] .name au lieu de $ rootScope.items.names [i]

2
404

Le problème est que le nom est toujours indéfini. $ Scope.name n'est pas défini. Dans la vue au lieu de ng-click = "inc1 (nom)", mettez ng-click = "inc1 (x.name)".

0
borja gómez