2017-01-15 2 views
0

Ich habe ein Bild Ich versuche zu schütteln, wenn ein Benutzer den Namen eines Fisches falsch rät. Ich verwende eine bedingte ng-class="{'shake':error}". Aber selbst wenn die Antwort richtig ist, erschüttert das Bild. Ich glaube nicht, dass $scope.error zu jeder Zeit auf True gesetzt ist. Was fehlt mir hier?Warum zeigt meine ng-Klasse selbst wenn falsch?

codepen

Antwort

0

denke ich, was wollen Sie return guessIsCorrect oder guessIsWrong von Ihrer compare Funktion zu tun ist.

$scope.compare = function(guess) { 
    guess = guess.replace(/\s/g, '').toLowerCase(); 
    var answers = []; 
    answers.push($scope.name.replace(/\s/g, '').toLowerCase()); 

    currentAnimal.alts.forEach(function(alt) { 
     answers.push(alt.toLowerCase().replace(/\s/g, '')); 
    }); 
    //console.log(answers); 
    //console.log("Guess: " + guess + "\n"); 
    //console.log("Answer: " + answers + "\n"); 

    for (var x = 0; x <= answers.length; x++) { 
     if (guess === answers[x]) { 
      return guessIsCorrect(); 
     } 
     if (x === answers.length) { 
      return guessIsWrong(); 
     } 
    } 

}; 
+0

Ah! Ich danke dir sehr! Dies ist eine offensichtliche Lücke in meinem JavaScript-Wissen. Aber warum muss ich beide Funktionen zurückgeben? Sollte ich nicht einfach anrufen können? –

+0

Ich denke, es gibt Fälle, in denen beide Funktionen auslösen können. Mit 'return' stoppen Sie die Funktion an diesem Punkt und ignorieren den folgenden Code. Sie können auch 'break' verwenden, nachdem guessIsCorrect oder guessIsWrong aufgerufen wurde, um die for-Schleife zu verlassen. –

+0

Ah, ich verstehe. Danke für die Hilfe! –

Verwandte Themen