私は、角度指示を使用して入力マスクのタイプを持っています。 formatters
とblur
イベントを使用してディスプレイのモデル値を書式設定しています。parsers
とfocus
イベントを使用して、ユーザーがテキストボックスを編集したときに書式を削除しています。ぼかしで呼び出される角度パーサ
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);
});
});
}
};
})
両方のプランカが同じように機能するように見えます。 IE 11を使用してWindows 10.私はあなたがここで何を記述しているか分かりません。 – Claies
@Claies "5!"の入力をクリックします。初期値を入力し、タブアウトします。ボタンの直前に出力されたモデル値はNaNに変わります。入力をクリックすると、入力値がNaNに変わります。 – Sean
これは関連しているようです:https://github.com/angular/angular.js/blob/master/CHANGELOG.md#bug-fixes-55。 "ngModel:$ validateの実行時にパーサーを実行しない"。この変更を見直して修正し、それがあなたの問題であるかどうか、そしてそれがまだ壊れている可能性があるかどうかを確認することができます。 – Claies