2016-08-04 8 views
0

私は、角度指示を使用して入力マスクのタイプを持っています。 formattersblurイベントを使用してディスプレイのモデル値を書式設定しています。parsersfocusイベントを使用して、ユーザーがテキストボックスを編集したときに書式を削除しています。ぼかしで呼び出される角度パーサ

Internet ExplorerでTabキーを使用してフォーカスを失った場合、モデルの値が正しく更新されないようにパーサーイベントが(誤って)発生します。

これはアンギュラバグですか?それとも、私が間違っていることがありますか? https://jsfiddle.net/capesean/htorwgs5/3/

注IEで、あなたのコンソールウィンドウを開いて、あなたはイベントがログアウト表示されること:ここでは

はフィドルです。

はまた、以前の角度のバージョンでこれをテストし、正常に動作するようです:

ディレクティブコードは次のとおりです。

.directive("test", function() { 
    return { 
     restrict: "A", 
     require: 'ngModel', 
     link: function (scope, element, attr, ngModel) { 

      // for DOM -> model validation 
      ngModel.$parsers.unshift(function (value) { 
       console.log("parser"); 
       ngModel.$setValidity('test', true); 
       return +value; 
      }); 

      ngModel.$formatters.unshift(function (value) { 
       console.log("formatter"); 
       ngModel.$setValidity('test', true); 
       return (value === undefined ? "" : value) + "!"; 
      }); 

      element.val(scope.minutes); 

      element.bind("blur", function() { 
       scope.$apply(function() { 
        console.log("blur"); 
        element.val((scope.minutes === undefined ? "" : scope.minutes) + "@"); 
       }); 
      }); 

      element.bind("focus", function() { 
       scope.$apply(function() { 
        console.log("focus"); 
        element.val(scope.minutes); 
       }); 
      }); 

     } 
    }; 
}) 
+0

両方のプランカが同じように機能するように見えます。 IE 11を使用してWindows 10.私はあなたがここで何を記述しているか分かりません。 – Claies

+0

@Claies "5!"の入力をクリックします。初期値を入力し、タブアウトします。ボタンの直前に出力されたモデル値はNaNに変わります。入力をクリックすると、入力値がNaNに変わります。 – Sean

+0

これは関連しているようです:https://github.com/angular/angular.js/blob/master/CHANGELOG.md#bug-fixes-55。 "ngModel:$ validateの実行時にパーサーを実行しない"。この変更を見直して修正し、それがあなたの問題であるかどうか、そしてそれがまだ壊れている可能性があるかどうかを確認することができます。 – Claies

答えて

1

は、これは既知の動作です。私はここにバグレポートを投稿しました: https://github.com/angular/angular.js/issues/14987

解決策は、バグレポートへの返信で示唆されているように、$ timeoutを使用して要素値の設定を遅らせることでした。

関連する問題