我必须绕过ngModelController.$parsers来存储一个值
I have to circumvent ngModelController.$parsers to store a value
我刚刚打开了一个关于ngModelController.$parsers如何在Chrome,Safari或FireFox上运行的错误报告。 但是,我正在处理的提示输入错误报告的应用程序仍然是一个正在进行的项目,我需要找到解决方法。
由于该错误,以下代码不起作用。 这段代码使用 jQuery 屏蔽输入以及 Angular 1.5:
link: function (scope, element, attrs, ctrl) {
// Build mask.
var mask = '99999?-9999';
$(element).mask(mask);
// Store all zip codes without non-digit characters
// E.G.: 12345-6789 -> 123456789
// 12345 -> 12345
ctrl.$parsers.unshift(function (viewValue) {
var nonDigitCharacters = /[^0-9]/g;
var digitsOnly = viewValue.replace(nonDigitCharacters, '');
return digitsOnly;
});
ctrl.$formatters.push(function (value) {
return $filter('zip')(value, false);
});
}
但是,我真的不知道任何其他方法可以在不使用ngModelController.$parser
函数的情况下将当前$viewValue
应用于模型。 我正在考虑做这样的事情:
$(element).on('keyup', function () {
var nonDigitCharacters = /[^0-9]/g,
digitsOnly = ctrl.$viewValue.replace(nonDigitCharacters, '');
// Something with digitsOnly?
});
。作为临时解决方法,但我不知道具体该怎么做。
问题:将值从指令直接应用于模型有哪些选项?
我发现了一个解决方法。 几乎。。。你必须蛮力这种事情。
ngModelController.$parsers
幕后所做的几乎是以下列表:
- 通过读取元素的值来获取当前
$viewvalue
。 - 将
$viewValue
传递到当前$parser
函数
中 - 获取该
$parser
函数的结果;将其传递给下一个函数。 - 重复直到完成。
- 将所有
$parser
函数的结果直接应用于模型。
。几乎,我不得不手动复制如下:
$(element).on('keyup', function() {
ctrl.$setViewValue($(element).val());
var nonDigitCharacters = /[^0-9]/g,
digitsOnly = ctrl.$viewValue.replace(nonDigitCharacters, '');
var model = $parse(attrs.ngModel),
modelSetter = model.assign;
scope.$apply(function () {
modelSetter(scope, digitsOnly);
});
});
这样做将允许您直接规避ngModelController.$parsers
。 话虽如此,我不确定我是否缺少任何需要注意的微妙之处。 希望这可以让我度过难关,直到调查错误并找到更好的解决方法,或者修复 Angular 团队管理的错误。
相关文章:
- 存储一个事件处理程序中的变量以供另一个事件处理器使用
- 递增并存储一个“;私人的“;使用闭包的变量
- 在浏览器上存储一个 css 类
- 我必须绕过ngModelController.$parsers来存储一个值
- 如何存储一个对象数组,这些对象是 ajax 查询从 javascript 中的 JSON 中提取数据的结果
- 在 .NET 和 JavaScript 中存储一个字符需要多少字节
- Cookie 数据在离开主页后仅存储一个变量
- AngularJS是否在$error.maxlength对象中存储一个值
- 在数据库中存储一个 JavaScript 数组,并在需要时取回数组
- MongoDB并存储一个DateTime字段
- 用javascript调用一个控制器函数,该函数将使用ajax(Laravel 4)在数据库中存储一个条目
- 剑道网格-我如何传递和存储一个
到一个很遥远的函数 - 如何使用service worker存储一个用户id
- 在javascript中,我如何存储一个变量(来自数据库),其中包含引号和撇号
- 在localStorage中获取并存储一个64mb的mp4文件
- Javascript事件——如何创建和存储一个只能被一个元素访问的变量
- 如何在Redux中存储一个排序集,并根据不同的键对其快速排序
- 用indexedDB存储一个three.js网格对象
- 存储一个布尔值或整型值,并在页面加载后检查/更改它的值
- 从函数中存储一个变量