Muszę zebrać wskaźnik zmian - w procentach - od użytkowników mojej aplikacji. Oto wprowadzania tekstu używam:AngularJS: Czy powinienem używać filtra do przeliczania wartości całkowitych na procenty?
<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>
Teraz to, co chcę jest użycie filtru, który przyjmuje wartość całkowitą, która wejść użytkownika i przekształcić ją w procentach przez pomnożenie jej przez 0.01
lub dzieląc ją przez 100
przed wysłaniem go do kontrolera do obliczeń
Ale nie mogę po prostu dowiedzieć się, gdzie umieścić filtr i jak go podłączyć. Próbowałem więc z taką dyrektywą:
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);
}
};
});
Ten rodzaj prac, ale czy nie powinienem używać filtra do tego zadania? Jak mam to zrobic?
Filtr służy do odwzorowania zawartości jednej tablicy na drugą. Myślę, że powinieneś wykonać konwersję w kontrolerze. Co powstrzymuje cię od używania kontrolera. – Chandermani
hmm - Myślałem, że filtry są dla "filtrowania" wartości, więc pomyślałem, że formatowanie, konwersja itp. Powinny być w filtrach –
Nie ma pól, które muszą przejść tę konwersję i myślałem, że logika zostanie powtórzona w kontrolerze –