Html 有可能让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: 使用指令,您可以获取输入数据,对

我们正在尝试让AngularJS国际化

我们已经包含了本地化文件(例如,
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。