Html 有可能让AngularJS国际化数字输入吗?
我们正在尝试让AngularJS国际化Html 有可能让AngularJS国际化数字输入吗?,html,angularjs,localization,cross-browser,Html,Angularjs,Localization,Cross Browser,我们正在尝试让AngularJS国际化值 我们已经包含了本地化文件(例如,angular-locale\u it-it.js),但是这些值仍然使用英语语言环境显示 这是一个问题,因为我们的后端(和管理层)希望数值在用户的区域设置中,并且接收123.45而不是123,45会导致错误 你可以找到一个例子 它在Chrome 27中工作 但它在Firefox21和InternetExplorer10中不起作用 这可能不是您想要的答案,但可能对您有所帮助: JsBin: 使用指令,您可以获取输入数据,对
值
我们已经包含了本地化文件(例如,angular-locale\u it-it.js
),但是这些值仍然使用英语语言环境显示
这是一个问题,因为我们的后端(和管理层)希望数值在用户的区域设置中,并且接收123.45
而不是123,45
会导致错误
你可以找到一个例子
它在Chrome 27中工作
但它在Firefox21和InternetExplorer10中不起作用
这可能不是您想要的答案,但可能对您有所帮助: JsBin: 使用指令,您可以获取输入数据,对其进行解析,然后将其放入
$scope
变量。请参阅:($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='' />
还要注意,输入现在是一个文本字段。看看这个:
输入是一个数字字段。但是输入11,5
,它将输出ùndefined
(请注意,我住在德国,我们使用逗号表示法)。因此,如果数字不是点符号,浏览器就不能正确地“解析”数字,即使您生活在使用逗号符号的地区
如果有什么不对劲,请纠正我;) 由于要格式化的数据类型通常是一个数字,在调用replace()之前,我们是否应该将数字转换为字符串? 当模型数据有数值时,我得到一个错误。 以下方法效果更好:
ngModelController.$formatters.push(function(data) {
//convert data from model format to view format
return (''+data).replace('.', ","); //converted
});
这可能与角度无关。应通过浏览器提供的IMHO。它应该由
lang
属性驱动:
<!DOCTYPE html>
<html lang="it">
...
...
请参阅上的更多详细信息,我遇到了与输入上的德国货币格式相同的问题。不幸的是(正如我们预期的那样),这不适用于IE11。