wake-up-neo.com

Stringvergleich in AngularJS

Ich versuche, zwei Strings in AngularJS zu vergleichen, und ich habe Beispiele online gesehen. Nach meinem Verständnis können Sie angle.equals (str1, str2) verwenden. Sie können === verwenden. Wenn Sie sich sicher sind, dass beide Strings sind, können Sie === verwenden.

Ich habe alle drei ausprobiert, bekomme aber kein Ergebnis. Bei dem, was ich getan habe, muss etwas falsch sein, aber ich weiß nicht, was es ist. 

Beim Ausführen des Codes wird die Funktion inc1 () aufgerufen. Die erste Warnung erscheint "inc1 angerufen". Die zweite Warnung "Inside for loop" wird jedoch nur einmal ausgeführt. Es sollte zweimal ausgeführt werden, oder?

Der Alarm innerhalb der if (Bedingung) wird überhaupt nicht ausgeführt. Wenn ich den 'if'-Block entferne, wird der Alarm "Inside for loop" zweimal ausgeführt.

Ich wäre sehr dankbar, wenn mir jemand sagen könnte, was ich hier falsch mache. Ich habe angle.equals (), === und == verwendet, aber dasselbe passiert jedes Mal. 

So funktionieren die HTML- und AngularJS-Codes:

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");
        }
}
}

// Sagen Sie, der Name ist 'Dolphin'

5
Anusha

Sie durchlaufen einen falschen Knoten :)

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

Sie sollten mit $ rootScope.items [i] .name statt mit $ rootScope.items.names [i] vergleichen.

2
404

Das Problem ist, dass der Name immer undefiniert ist. $ Scope.name ist nicht definiert. In der Ansicht anstelle von ng-click = "inc1 (name)" setzen Sie ng-click = "inc1 (x.name)".

0
borja gómez