2017-10-13 9 views
0

J'ai une directive pour montrer un symbole en fonction de la valeur d'un champ. Ceci est attaché à un champ comme suit:Directive angulaire - NgModelCtrl Parser Issue

<input type="text" placeholder="" class="text-input" ng-class="example_class" ng-model="exmaple-model" my-directive /> 

Et une directive comme suit:

module.directive("myDirective", function() { 
    return { 
     require: "?ngModel", 

     link: function (scope, element, attrs, ngModelCtrl) { 
      /*breakpoints show the line above and below are reached*/ 
      ngModelCtrl.$parsers.push(function (val) { 
       /* call to function to show symbol, this line is never reached */ 
      } 

Le code atteint la ligne ngModelCtrl, mais atteint pas plus loin. Le débogage a montré que tandis que le ngModelCtrl semble être construit correctement (a des fonctions et des valeurs, etc.) le $parsers est vide - la longueur est 0, les fonctions qui devraient être là ne sont pas.

Si vous observez l'inspecteur Chrome, aucune erreur ne se produit. Y a-t-il des raisons pour que le $parsers soit vide ou existe-t-il un moyen de déboguer la directive?

+0

Pourquoi vous avez deux méthodes de lien? (ou juste mal copié?) Je suppose que ngModel ne devrait pas ** être ** facultatif (sans?) – Thowk

Répondre

2

Votre analyseur montre 0 longueur, essayez de retourner une valeur de la méthode d'analyse et de l'utiliser comme suit:

function parse(value) { 
    if (value) { 
    return value.toLowerCase(); 
    } 
} 
ngModelController.$parsers.push(parse);