2016-07-11 19 views
0

Ich muss 4 Bedingungen in ng überprüfen - wenn die Booleschen Bedingungen sind. Wenn einer von ihnen wahr ist, muss ich ein div anzeigen.Überprüfung mehrerer Bedingungen in ng-if

Gibt es einen einfachen und besseren Weg, es zu tun?

<div ng-if="ctrl.survivor || ctrl.doctor || ctrl.patient || ctrl.beneficiary"> 
<div ng-bind-html=" {{ myContent }}"> 
</div> 
</div> 
+2

Sie die Logik innerhalb einer Funktion in der Steuerung setzen könnte, aber es ist kein einfacher Weg, um diese Logik darzustellen; Die Funktion wird im Wesentlichen gleich aussehen. – Claies

+0

@Claies: Danke, also ist das die richtige Syntax? Ich bin neu bei ANgular. Ich muss diesen Code jedoch noch testen. Ich werde es jetzt machen. Aber sieht das alles gut aus? Und ja, ich bekomme das Setup dafür nur im Controller – Learner

+0

Zustimmen mit @Claies, auch, was sind andere Arten von Benutzerrollen neben den genannten vier? Sie könnten möglicherweise einfach die Logik, indem Sie die Idee von Nicht wenn. –

Antwort

1

Im Allgemeinen komplexen Logik innerhalb des Winkels Ausdrücke ist ein Code Geruch:

  • schwer zu lesen
  • schwer zu debuggen
  • hart

In der Regel zu testen Ich versuche, boolesche Logik oder irgendetwas anderes zu vermeiden, das die Komplexität in eckigen Ausdrücken anzeigt, die ich schreibe oder überarbeite. Stattdessen empfehle ich, dass Sie die Logik in eine Controller-Methode extrahieren und die Controller-Methode direkt aufrufen. So können Sie auch einen schönen Komponententest dafür schreiben. Der endgültige Code, den ich empfehlen würde wie folgt aussehen würde:

<div ng-if="ctrl.isApplicable()"> 
    <div ng-bind-html=" {{ myContent }}"></div> 
</div> 

In der Steuerung:

class Ctrl { 
    ...  
    isApplicable() { 
    return survivor || ctrl.doctor || ctrl.patient || ctrl.beneficiary; 
    } 
    ... 
}