Wir bieten Schulungen an! Von Anfänger bis Experte - inklusive Agentic AI Coding!
Artikel Header Bild zu Das merkwürdige Verhalten von ng-show (vor AngularJS 1.3)

Das merkwürdige Verhalten von ng-show (vor AngularJS 1.3)

Sascha Brink 2 Min. Lesezeit

Hinweis: Das merkwürdige Verhalten wurde in AngularJS 1.3 behoben.

Andreas Becker war so lieb und hat im AngularJS Tutorial auf das merkwürdige Verhalten von ng-show hingewiesen:

Im Beispiel erscheint nach der Eingabe eines Buchstabens der Satz “Du suchst gerade nach:” mit dem entsprechenden Zeichen dahinter. Tippe ich allerdings n oder f ein, erscheint dieser Satz nicht. Hast du dafür eine Erklärung?

Kontext: Im Tutorial geht es darum den Satz anzuzeigen, wenn man in ein Textfeld etwas eingibt (Demo).

<input type="text" ng-model="search" />
<p ng-show="search">Du suchst gerade nach: {{search}}</p>

Erklärung

Wir haben im Quellcode nachgeforscht und folgende Erklärung gefunden: ng-show/ng-hide benutzen intern die Funktion toBoolean, um einen String auf true/false zu testen.

Die Funktion toBoolean sieht folgendermaßen aus:

function toBoolean(value) {
  if (typeof value === "function") {
    value = true;
  } else if (value && value.length !== 0) {
    var v = lowercase("" + value);
    value = !(
      v == "f" ||
      v == "0" ||
      v == "false" ||
      v == "no" ||
      v == "n" ||
      v == "[]"
    );
  } else {
    value = false;
  }
  return value;
}

Das bedeutet, wenn in einem String f, 0, false, no, n oder [] steht, wird dieser als false gewertet.

💡 Hat dir das Tutorial geholfen?

Wir bieten auch Angular-Intensiv-Schulungen an, um dich möglichst effektiv in das Thema Angular zu begleiten. Im Kurs kannst Du die Fragen stellen, die Du nur schlecht googeln kannst, z.B. "Besserer Weg, um meine Applikation zu strukturieren?". Wir können sie Dir beantworten.

Jetzt weiter lernen
Teilnehmer:innen der Veranstaltung Angular-Intensiv-Workshop

💡 Keine Lust zu lesen?

Nicht jeder lernt am besten aus Büchern und Artikeln. Lernen darf interaktiv sein und Spaß machen. Wir bieten dir auch Angular Intensiv-Schulungen an, damit du tiefer in die Thematik einsteigen kannst.

Mehr Informationen zur Angular-Schulung
Teilnehmer:innen in der Veranstaltung Angular-Intensiv-Workshop

Lösung

Wer das “normale” Verhalten erzwingen möchte, kann einen String schon vorher mit !! in einen Boolean-Wert konvertieren.

<input type="text" ng-model="search" />
<p ng-show="!!search">Du suchst gerade nach: {{search}}</p>
Sascha Brink

Sascha Brink

Gründer von Angular.DE
Überzeugter Webentwickler und seit über 15+ Jahren im IT-Umfeld tätig.

Sascha betreut regelmäßig Angular-Projekte und unterstützt Firmen bei der Ausbildung ihrer Mitarbeiter. Im Jahr 2013 hat er die Platform AngularJS.DE gestartet um das Framework in Deutschland bekannter zu machen. Sascha gibt Angular- und JavaScript-Schulungen auf deutsch und englisch.

Weitere Artikel

Migration AngularJS zu Angular
angularjs angular
Jonathan Schneider •

Migration AngularJS zu Angular

Migration mit ngUpgrade leichtgemacht. Eine Zusammenfassung über alle wichtigen Schritte, wie ihr eure AngularJS App zu einer Angular App migrieren könnt.

Migration AngularJS zu Angular [Video]
angularjs angular
Robin Böhm •

Migration AngularJS zu Angular [Video]

Angular Version >2.x kommt … und es macht alles anders! Ist das wirklich so? Was hat das für meine Anwendung zu bedeuten? Mehr darüber in diesem Artikel!

Newsletter

Bleibe auf dem Laufenden mit den neuesten Angular News, Tutorials und Schulungsangeboten.

Newsletter abonnieren