Ich muss eine Änderungsrate - in Prozent - von den Benutzern meiner Anwendung erfassen. Hier ist die Texteingabe Ich verwende:AngularJS: Sollte ich einen Filter verwenden, um ganzzahlige Werte in Prozent zu konvertieren?
<label for="annual-change" class="pt-underline"> I am anticipating
<input id="annual-change" ng-model="calc.yrChange" type="text" placeholder="0" /> % of growth annually.<br><br>
</label>
Nun, was ich will, ist ein Filter zu verwenden, die den ganzzahligen Betrag, um den Benutzereingaben nimmt und wandelt es in ein Prozentsatz, indem sie durch 0.01
Multiplikation oder durch 100
Dividieren bevor ich es an die Steuerung für Berechnungen senden
Aber ich kann einfach nicht herausfinden, wo den Filter und wie man es haken. Also versuchte ich es mit einer Richtlinie wie folgt:
app.directive("percent", function($filter){
var p = function(viewValue){
console.log(viewValue);
var m = viewValue.match(/^(\d+)/);
if (m !== null)
return $filter('number')(parseFloat(viewValue)/100);
};
var f = function(modelValue){
return $filter('number')(parseFloat(modelValue)*100);
};
return {
require: 'ngModel',
link: function(scope, ele, attr, ctrl){
ctrl.$parsers.unshift(p);
ctrl.$formatters.unshift(f);
}
};
});
Diese Art der Arbeiten, aber sollte ich nicht einen Filter für diese Aufgabe verwenden? Wie mache ich das?
Filter sind da, um den Inhalt eines Arrays einem anderen zuzuordnen. Ich denke, du solltest die Umwandlung in Controller machen. Was hält Sie davon ab, Controller zu verwenden? – Chandermani
hmm - Ich dachte, Filter waren zum 'Filtern' von Werten, also dachte ich, Formatierung, Konvertierung usw. sollte in Filtern sein –
Es gibt ein Nein von Feldern, die durch diese Konvertierung gehen müssen und ich dachte, die Logik würde in der Steuerung wiederholt werden –