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