我剛剛打開了一個bug report about how ngModelController.$parsers does not work on Chrome, Safari, or FireFox。但是,我正在開發的應用程序提示您輸入錯誤報告仍然是一個正在進行的項目,而且我需要找到一個解決方法。
以下代碼不是工作由於該錯誤。此代碼使用jQuery Masked Input以及角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);
});
}
不過,我真的不知道任何其他方式來應用當前$viewValue
到模型,而無需使用ngModelController.$parser
功能。我正在考慮做這樣的事情:
$(element).on('keyup', function() {
var nonDigitCharacters = /[^0-9]/g,
digitsOnly = ctrl.$viewValue.replace(nonDigitCharacters, '');
// Something with digitsOnly?
});
...作爲一個臨時的解決方法,但我不知道究竟該做什麼。
問題:從指令直接向模型應用值有哪些選擇?