web-dev-qa-db-fra.com

comment comparer une valeur de chaîne dans ng-show à l'intérieur d'une directive personnalisée?

Essayer d'utiliser une directive contenant une instruction ng-show. Fondamentalement, il vérifie la valeur d'une chaîne qui est la propriété status_p1 dans mon jsonarray 'names':

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

La directive est définie comme suit:

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

Le contrôleur + tableau de noms dans ma page principale ressemble à ceci:

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

  ]
});

Et enfin la page principale:

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

Affiche actuellement une croix où il devrait afficher une coche/coche. Je m'attendais à ce que la condition soit évaluée à VRAI car la propriété status_p1 équivaut à "travailler". Comment puis-je modifier cette ng-showstatement pour que la comparaison de chaînes fonctionne? lien plunkr: http://plnkr.co/edit/3VdsbsSHpkNJFVnvkmOW?p=preview

20
Pindakaas

L'expression

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

compare name.status_p1 avec une propriété working sur la portée actuelle, qui n'est pas définie dans votre cas. Ce dont vous avez besoin est de le comparer avec la chaîne littérale 'working'.

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

Modifié Plunkr

43
c.P.u1

Dans mon cas, j'avais ceci:

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

et a dû le changer en ceci:

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

J'ai mis la chaîne d'attribut entre guillemets simples et la chaîne à comparer entre guillemets doubles.

2
wcyn