4

パーサーとフォーマッターは初めてです。モデルの変更時に検証を行うディレクティブがあります。これを行う 1 つの方法は $watch ですが、モデルを更新できるため、これは良い方法ではないと理解しています。

だから私はパーサーを見ていて、このコードを試しました

app.directive('myDirective', function($compile) {


return {
    restrict: 'E',
    require: 'ngModel',
    scope: {

    },

    link: function($scope, elem, attr, ctrl) {
      console.debug($scope);
      ctrl.$formatters.push(function(value) {
        console.log("hello1");
        return value;
      });
      ctrl.$parsers.unshift(function(value) {

        debugger;
        console.log("hello");
        return value;
      });
    }
  };
});

ただし、パーサー関数は呼び出されません。フォーマッタは 1 回呼び出されます。plunkr を参照してください。誰かが私が間違っていることを教えてもらえますか?テキストボックスに入力したときにパーサー関数が呼び出されないのはなぜですか?

4

2 に答える 2