0
我有一種使用角度指令的輸入掩碼類型。我正在使用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