Comment puis-je appliquer un AngularJS directive basée sur une classe définie par ng-classe?

Je suis en train de conditionnellement appliquer une directive à un élément en fonction de sa classe.

Ici est un cas simple de mon problème, voir les résultats dans ce violon. Pour cet exemple, je suis en utilisant la carte des noms de classe pour les booléens forme de ng-class avec true; dans mon cas je voudrais utiliser le booléen résultat d'une fonction.

Balisage:

<div ng-app="example">
  <div class="testcase">
    This will have the directive applied as I expect
  </div>
  <div ng-class="{'testcase':true}">
    This will not have the directive applied but I expect it to
  </div>
</div>

JS:

angular.module('example', [])
  .directive('testcase', function() {
      return {
          restrict: 'C',
          link: function(scope, element, attrs) {
              element.css('color', 'red');
          }
      }
    }
  );

Pourquoi n'est-ce pas à cette directive à la div que l'obtention de sa classe à travers ng-class? Suis-je un malentendu quelque chose au sujet de l'ordre dans lequel AngularJS est le traitement de directives?

Comment devrais-je être conditionnellement l'application d'une directive à un élément basé sur l'évaluation d'une expression?

  • Je n'étais pas en mesure de trouver la réponse, mais pour ce que ça vaut, dans mon test, la classe a ÉTÉ d'obtenir activé ou désactivé, il n'a tout simplement pas appliquer la directive de la fonction. Pourquoi ne pas essayer de passer un vrai/faux de l'état dans la directive? c'est à dire <input my-directive toggle="true"> Voici mon violon. Inspecter la 2e ligne et cliquez sur le bouton à bascule pour montrer à la classe de l'ajout et de la suppression. jsfiddle.net/eg4zg
  • d'avoir à faire ng-class="{true: 'testcase', false: ''} [flip == true]" semble que beaucoup de code inutile lors de ma lecture de l'angle de docs suggèrent que ng-class="{'testcase': true}" devraient fonctionner de la même manière...
  • La classe ne sont calculés qu'après les directives sont compilés, donc peut-être pas une bonne façon d'aller à ce sujet. Semble être une meilleure approche de ce qui pourrait être à la charge angulaire modèle basé sur votre objet.
  • J'ai créé un github billet pour vous github.com/angular/angular.js/issues/3854
  • merci @sza! J'ai sauté dans la discussion là-bas.