61 Stimmen

Angular-Ausdruck, falls Array enthält

Ich versuche, einer Klasse ein Element hinzuzufügen, wenn ein jobSet mithilfe von Ausdrücken nicht zur Genehmigung ausgewählt wurde.

Dies ist nicht unbedingt eine narrensichere Methode. Haben Sie Vorschläge, wie ich das machen sollte?

117voto

Stewie Punkte 60150

Sie können dies mit einer etwas anderen Syntax erreichen:

ng-class="{'approved': selectedForApproval.indexOf(jobSet) === -1}"

Plnkr

16voto

Slava Fomin II Punkte 23725

Sie sollten die Vorlagen nicht mit komplexer Logik überlasten, das ist eine schlechte Praxis. Denken Sie daran, es immer einfach zu halten!

Der bessere Ansatz wäre, diese Logik in eine wiederverwendbare Funktion auf Ihrem $rootScope auszulagern:

.run(function ($rootScope) {
  $rootScope.inArray = function (item, array) {
    return (-1 !== array.indexOf(item));
  };
})

Verwenden Sie es dann in Ihrer Vorlage:

Ich denke, jeder wird zustimmen, dass dieses Beispiel viel lesbarer und wartbarer ist.

0voto

Makz23 Punkte 28

Irgendwo in Ihrer Initialisierung setzen Sie diesen Code ein.

Array.prototype.contains = function contains(obj) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
};

Dann können Sie es auf folgende Weise verwenden:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X