Ответ 1
По-прежнему нет ответа для этого через две недели. Я бы предположил, что все согласны с тем, что этот AngularUI слишком ограничен в работе с этой ситуацией.
В итоге я использовал jquery.inputmask
(http://github.com/RobinHerbots/jquery.inputmask).
Мы использовали эту библиотеку расширений jQuery, так как нет Angular. Он по-прежнему остается самой мощной маской ввода. По крайней мере, у него есть все функции, которые мне нужны.
Вот моя настройка.
-
Сначала, конечно, нужно NuGet или загрузить библиотеку. Текущая версия (3.0.55) разделяет функции на разные js файлы. (дата, число, телефон...) Обязательно укажите все, что вам нужно.
-
Создайте директиву для атрибута или класса маски ввода. Используйте
link
в этой директиве, чтобы использовать jQuery для применения маски ввода:
Вот код:
(function(){
'use strict';
var directiveId = 'myInputMask';
angular.module('myApp')..directive(directiveId, function() {
return {
restrict: 'AC',
link: function (scope, el, attrs) {
el.inputmask(scope.$eval(attrs.myInputMask));
el.on('change', function() {
scope.$eval(attrs.ngModel + "='" + el.val() + "'");
// or scope[attrs.ngModel] = el.val() if your expression doesn't contain dot.
});
}
}
});
})();
- Наконец, примените эту директиву в атрибуте или классе в нашем Html.
Вот Html:
<input type="text" id="phone"
my-input-mask="{mask: '(999)999-9999[ ext. 9999]', greedy: false}"
required="" ng-model="employee.phone">
Конечно, с jquery.inputmask
мы можем иметь гораздо более сложную маску ввода:
<input type="text" id="salary"
dnr-input-mask="{'alias': 'numeric', 'groupSeparator': ',', 'autoGroup': true, 'digits': 2, 'digitsOptional': true, 'placeholder': '0'}"
model="employee.salary">
Итак, вывод: AngularUI еще предстоит пройти долгий путь, чтобы удовлетворить наши потребности. В настоящий момент jquery.inputmask
все еще процветает.