Ответ 1
Это может быть не тот ответ, который вы хотите, но, возможно, это немного поможет вам:
JsBin: http://jsbin.com/iyulaj/1/
Используя директиву, вы можете взять данные ввода, проанализировать его и затем поместить в переменную $scope
. Пожалуйста, смотрите: http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController ($parsers
и $formatters
) Я взял его из Использование углового фильтра в элементе ввода).
Директива может искать запятую и заменять ее точкой. Это может выглядеть так:
angular.module('MyModule').directive('numberinput', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$parsers.push(function(data) {
//convert data from view format to model format
return data.replace(',', "."); //converted
});
ngModelController.$formatters.push(function(data) {
//convert data from model format to view format
return data.replace('.', ","); //converted
});
// http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController
}
};
});
Поле ввода:
<input ng-model='value' type='text' numberinput='' />
Также обратите внимание, что ввод теперь представляет собой текстовое поле. Посмотрите на это: http://jsbin.com/iyurol/1/
Ввод - это числовое поле. Но введите 11,5
, и он выведет ùndefined
(обратите внимание, что я живу в Германии, и мы используем запятую). Таким образом, браузер не "разбирает" номер правильно, если он не в точечной нотации, даже если вы живете в регионах с запятой-нотацией...
Пожалуйста, поправьте меня, если в этом что-то не так;)