Wie man ein Prozent formatierte Eingabe-Arbeit auf den neuesten AngularJS?
Sah ich diese Lösung http://jsfiddle.net/gronky/GnTDJ/ und es funktioniert. Das heißt, bei der Eingabe von 25, er ist zurückgedrängt Modell 0,25
HTML:
<script type="text/javascript" ng:autobind
src="http://code.angularjs.org/0.9.17/angular-0.9.17.js"></script>
<script>
function Main() {
this.var = '1.0000';
}
</script>
<div ng:controller="Main">
<input type="text" name="var" ng:format="percent">
<pre>var = {{var|json}}</pre>
</div>
JavaScript:
angular.formatter('percent', {
parse: function(value) {
var m = value.match(/^(\d+)\/(\d+)/);
if (m != null)
return angular.filter.number(parseInt(m[1])/parseInt(m[2]), 2);
return angular.filter.number(parseFloat(value)/100, 2);
},
format: function(value) {
return angular.filter.number(parseFloat(value)*100, 0);
},
});
Ich habe versucht, es auf den neuesten AngularJS, funktioniert es nicht mehr obwohl http://jsfiddle.net/TrJcB/, die, wenn Sie Eingang 25, und schieben Sie Sie zurück, als 25 auch, nicht schieben die richtige 0.25-Wert von Modell zu Modell.
Oder vielleicht gibt es bereits einen eingebauten Formatierer für Prozent? Ich wollte Währungs-formatter auch, oder Komma getrennt die Nummer.
InformationsquelleAutor Hao | 2012-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
The fiddle funktioniert nicht mit der aktuellen Winkel-version schon ein paar APIs haben sich geändert, seit.
angular.formatter
ist nicht mehr verfügbar und weder istangular.filter
.Die Art und Weise, es zu schreiben, nun, ist die Verwendung einer Richtlinie und nutzen
$parser
und$formatter
erhältlich über die Richtlinie controller. Damit Ihr link-Funktion sieht in etwa wieAuch die Filter sind jetzt aufgerufen durch
$filter
service. Die Dokumentation finden Sie hier: https://docs.angularjs.org/api/ng/filter/numberAktualisiert fiddle für das original-Beispiel: http://jsfiddle.net/abhaga/DdeCZ/18/
Währung filter ist bereits im eckigen: https://docs.angularjs.org/api/ng/filter/currency
Vielleicht ist es erwähnenswert, dass, wenn man in einem anderen Gebietsschema, die anderen Formatierer/Parser machen kann das Modell
undefined
(ie:$filter('number')
zurück"4,00"
wenn ein anderes Formatierungsprogramm fragt nach einem"."
Dezimaltrennzeichen).Das soll einen string zurückgeben, und nicht eine Dezimalzahl? Wie könnte ich es bekommen, um wieder eine dezimal?
InformationsquelleAutor abhaga
Andere Weise zu implementieren Prozentsatz filter (arbeitet mit Winkel - #~1.2):
Wie es zu benutzen:
InformationsquelleAutor Igor Rafael
Hier ist ein full-Richtlinie, parse, format und führen Eckig überprüfung der Eingänge. (Getestet gegen kantige 1.2 & 1.3.)
Verwenden wir diese, so dass unser Datenmodell zum/vom server kann ausgedrückt werden in decimal-notation (0.7634), aber wir bieten einem lesbaren format an den Benutzer (76.34), und erzwingen eine maximale Genauigkeit. Beachten Sie, dass diese Richtlinie betrifft rein mit der numerischen Aspekte. Ich finde es einfacher, fügen Sie ein '%' in der Vorlage separat, als auch hier.
Standardwerte für die Durchsetzung der input-Werte von -100 bis 100, aber Sie können Ihre eigenen Grenzen mit attrs
pct-min
undpct-max
.Vielen Dank für dein Kommentar (und versucht zu Bearbeiten). Ich hatte verbessert diese Direktive in der Produktion mit einigen dieser änderungen, aber vergessen, Sie zu aktualisieren hier.
InformationsquelleAutor XML
Ich geändert abhaga Antwort zu ermöglichen .## und ## input. Meiner Meinung nach ist dies eine viel mehr benutzerfreundliche
InformationsquelleAutor Sup3rb0wlz