2017-10-13 117 views
0

我有一個指令,顯示一個符號取決於一個字段的值。這被連接到字段如下:Angular Directive - NgModelCtrl Parser問題

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

而一個指令,如下所示:

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 */ 
      } 

的代碼到達ngModelCtrl線,但沒有進一步的到達。調試表明,雖然ngModelCtrl看起來是正確構建的(具有函數和值等),但$parsers爲空 - 長度爲0,應該在那裏的函數不是。

查看Chrome檢查器不會產生錯誤。是否有任何原因使$parsers爲空,或者有任何方法可以進一步調試指令嗎?

+0

爲什麼你有兩個鏈接的方法呢? (或只是錯誤的複製?)我想ngModel應該**不**是可選的(沒有?) – Thowk

回答

2

解析器正顯示出長度爲0,嘗試從parse方法返回一些值,按如下方式使用它:

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