2015-02-19 8 views
18

Der Versuch, eine Direktive mit einer ng-show-Anweisung zu verwenden. Grundsätzlich prüft es gegen den Wert einer Zeichenfolge, die die status_p1 Eigenschaft in meinem Namen 'jsonarray ist:Wie vergleicht man einen Stringwert in ng-show innerhalb einer Customdirective?

ng-show="name.status_p1==working" 

Die Richtlinie wie folgt definiert ist:

app.directive('radioButton',function(){ 
    return { 
    restrict: 'E', 

    replace: 'true', 

    template: '<table border="2px">' + 
    '<tr><td>{{name.name}}</td><td>Working</td><td><img src="http://www.iconshock.com/img_jpg/REALVISTA/general/jpg/256/cross_icon.jpg" alt="img1" id="imgworking" ng-show="name.status_p1!=working"><img src="http://png-1.findicons.com/files/icons/2198/dark_glass/128/camera_test.png" alt="img2" ng-show="name.status_p1==working"></td></tr>' + 
    '</table>' 
    }; 
}) 

Der Controller + NamenArr in meinem Haupt-Seite aussieht wie folgt aus:

app.controller('MainCtrl', function($scope) { 
$scope.names = [ 
    { 
     name: 'couple 1', 
     status_p1: 'working', 
     status_p2: 'retired' 
    } 

    ] 
}); 

Und schließlich die Hauptseite:

<body ng-controller="MainCtrl"> 
    <div ng-repeat="name in names"> 
     <radio-button></radio-button> 
    </div> 
</body> 

Derzeit wird ein Kreuz angezeigt, wo es ein Häkchen/Häkchen anzeigen sollte. Ich habe erwartet, dass die Bedingung auf TRUE ausgewertet wird, da die status_p1-Eigenschaft gleich "Working" ist. Wie kann ich diese ng-show-Anweisung ändern, damit der Stringvergleich funktioniert? plunkr Link: http://plnkr.co/edit/3VdsbsSHpkNJFVnvkmOW?p=preview

Antwort

38

Der Ausdruck

ng-show="name.status_p1==working" 

name.status_p1 mit einer working Eigenschaft auf dem aktuellen Bereich vergleicht, die nicht in Ihrem Fall definiert ist. Was Sie brauchen, ist es mit der literalen Zeichenfolge 'working' zu vergleichen.

ng-show="name.status_p1=='working'"; 

Modified Plunkr

+1

Versucht, das hat nicht funktioniert – Pindakaas

+7

Sie müssen die einfachen Anführungszeichen um '\' working \ ''entkommen, da Ihre Vorlage Zeichenfolge durch einfache Anführungszeichen begrenzt ist. Überprüfen Sie die modifizierte Plunkr. –

+0

Alter vielen Dank – Pindakaas

2

In meinem Fall hatte ich das:

ng-show ="authenticated == {{it.logged_in_view}} || {{it.logged_in_view == 'neutral'}}" 

und musste es, dies ändern:

ng-show ='authenticated == {{it.logged_in_view}} || {{it.logged_in_view == "neutral"}}' 

ich in Einzel das Attribut Zeichenfolge eingeschlossen Anführungszeichen und die zu vergleichende Zeichenfolge in Anführungszeichen.

Verwandte Themen