ああ、
私の最初のアイデアは、ここで懸念を分離することです。片側にモデルmynumber
、反対側に表現があります。それらは私の観点とは異なります。
したがって、できることは、ディレクティブを導入することです (AngularJS 1.1.5 で日付値に対してこれを行ったことがあるため、少し追加のハッキングが必要になる可能性があります)。
まず、ディレクティブを導入します。
<input type="text" class="span2" ng-model="mynumber" number-format>
コードで:
var app = angular.module("your.directives", ['your.filters']);
app.directive("numberFormat", [
'$filter', function(filter) {
return {
replace: false,
restrict: "A",
require: "?ngModel",
link: function(scope, element, attrs, ngModel) {
var numberFormat;
if (!ngModel) {
return;
}
ngModel.$render = function() {
return element.val(ngModel.$viewValue);
};
var numberFilter = filter('myNumberFilter');
return ngModel.$formatters.push(function(value) {
return numberFilter(value);
});
}
};
}
]);
これに必要なのは、myNumberFilter
指定された言語に基づいて (どのように決定したとしても) 入力値をフォーマットする方法を決定できる、有効なフィルターが存在することです。
編集: AngularJS には独自の数値フィルターがあることに気付いたので、名前を変更しました。独自のものを追加しましょう:
var app = angular.module("your.filters", []);
app.filter("myNumberFilter", ['SiteLanguage',
function(siteLanguage) {
return function(number) {
var language = siteLanguage.getLanguage(); //I assume you have a service that can tell you the current language
switch(language) {
case "de":
// return the variant of number for "de" here
break;
case "fr":
// return the variant of number for "fr" here
break;
default:
// return english variant here.
break;
};
}
]
});
おそらく、個々の国向けのフォーマッタ機能が必要になるでしょう (むやみにangular locale
.SiteLanguage
お役に立てれば :)