2015-02-19 9 views
18

Tentativo di utilizzare una direttiva con un'istruzione ng-show al suo interno. In sostanza si confronta con il valore di una stringa, che è la proprietà status_p1 nel mio jsonarray 'nomi':come confrontare un valore stringa in ng-show all'interno di una customdirective?

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

La direttiva è definita come questo:

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>' 
    }; 
}) 

Il controller + namesArray nei miei principali sguardi pagina in questo modo:

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

    ] 
}); 

E infine la pagina principale:

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

Attualmente viene visualizzata una croce in cui dovrebbe essere visualizzato un segno di spunta. Mi aspettavo che la condizione valutasse su TRUE perché la proprietà status_p1 è uguale a "working". Come posso modificare questo ng-showstatement per far funzionare il confronto tra stringhe? collegamento plunkr: http://plnkr.co/edit/3VdsbsSHpkNJFVnvkmOW?p=preview

risposta

38

L'espressione

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

confronta name.status_p1 con una proprietà working sulla portata attuale, che non è definito nel tuo caso. Quello di cui hai bisogno è confrontarlo con la stringa letterale 'working'.

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

Modificato Plunkr

+1

Provato che non ha funzionato – Pindakaas

+7

Dovrai sfuggire alle virgolette singole attorno a "\" working \ "poiché la stringa del tuo modello è delimitata da virgolette singole. Controlla il plunkr modificato. –

+0

Amico, grazie mille – Pindakaas

2

Nel mio caso, ho avuto questo:

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

e ho dovuto cambiare a questo:

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

ho racchiuso la stringa di attributo in singola le virgolette e la stringa da confrontare tra virgolette.