2017-08-08 2 views
2

Je me bats avec la syntaxe avec angularjs (utilisé dans nodered). Je veux définir différentes classes bootstrap sur chaque ligne en fonction de workorder.state dans une liste. si l'instruction "if" est vraie, elle doit utiliser la classe de succès. Mais le si ne sont jamais vrai, il utilise toujours "info" par défaut. Même si la sortie de {{workorder.state}} est "Prêt". Aucune suggestion?Comment définir une instruction si analysée correctement avec l'attribut class et ng-class avec Angularjs dans une page Web?

<div class="list-group" ng-repeat="workorder in workorders"> 
    <button type="button" class="ng-class:{{workorder.state}} === 'Ready' ? list-group-item list-group-item-success responsive-width : list-group-item list-group-item-info responsive-width;"> 
      <span class="brnodisplay">{{workorder.state}}</span> 
    </button> 
</div> 

Je reçois ci-dessous une erreur dans la console du navigateur.

app.min.js:142 Error: [$parse:syntax] http://errors.angularjs.org/1.5.10/ $parse/syntax?p0=%7B&p1=invalid%20key&p2… ve-width%20%3A%20list-group-item%20list-group-item-info%20responsive-width at http://127.0.0.1:1880/ui/js/app.min.js:29:426 at throwError (http://127.0.0.1:1880/ui/js/app.min.js:256:200) at t.object (http://127.0.0.1:1880/ui/js/app.min.js:256:33) at t.primary (http://127.0.0.1:1880/ui/js/app.min.js:252:151) at t.unary (http://127.0.0.1:1880/ui/js/app.min.js:251:503) at t.multiplicative (http://127.0.0.1:1880/ui/js/app.min.js:251:249) at t.additive (http://127.0.0.1:1880/ui/js/app.min.js:251:76) at t.relational (http://127.0.0.1:1880/ui/js/app.min.js:250:416) at t.equality (http://127.0.0.1:1880/ui/js/app.min.js:250:241) at t.logicalAND (http://127.0.0.1:1880/ui/js/app.min.js:250:94)

Répondre

1

Vous n'avez pas doivent utiliser l'interpolation {{}} et filtrer les classes communes (qui devraient être là indépendamment de la vérification) à class.

HTML:

<div class="list-group" ng-repeat="workorder in workorders"> 
    <button type="button" class="list-group-item responsive-width" ng-class="{'list-group-item-success': workorder.state === 'Ready' ,'list-group-item-info':'workorder.state !== 'Ready' }"> 
      <span class="brnodisplay">{{workorder.state}}</span> 
    </button> 
</div> 

Pour plus référence:

  1. Adding multiple class using ng-class
  2. https://docs.angularjs.org/api/ng/directive/ngClass
1

Essayez de changer ng classe à ce (ng-class est utilisé au lieu de class, non plus que vous avez utilisé):

ng-class="workorder.state === 'Ready' ? 'list-group-item list-group-item-success responsive-width' : 'list-group-item list-group-item-info responsive-width'" 

https://docs.angularjs.org/api/ng/directive/ngClass

1
<div class="list-group" ng-repeat="workorder in workorders"> 
    <button type="button" class="list-group-item responsive-width" ng-class="{'list-group-item-success': workorder.state === 'Ready' , 'list-group-item-info': workorder.state !== 'Ready' }"> 
     <span class="brnodisplay">{{workorder.state}}</span> 
    </button> 
</div>