Ho bisogno di raccogliere un tasso di variazione - in percentuale - dagli utenti della mia applicazione. Ecco il metodo di scrittura che sto usando:AngularJS: dovrei usare un filtro per convertire i valori interi in percentuali?
<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>
Ora quello che voglio è quello di utilizzare un filtro che prende l'ammontare intero che gli input dell'utente e convertirlo in una percentuale moltiplicandolo per 0.01
o dividendolo per 100
prima di inviarlo al controller per i calcoli
Ma non riesco a capire dove posizionare il filtro e come agganciarlo. Così ho provato con una direttiva in questo modo:
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);
}
};
});
Questo tipo di opere, ma non dovrei usare un filtro per questo compito? Come faccio a fare questo?
Il filtro serve per mappare il contenuto di un array su un altro. Penso che dovresti fare la conversione nel controller. Cosa ti impedisce di usare il controller. – Chandermani
hmm - Pensavo che i filtri fossero per i valori di 'filtering' quindi pensavo che la formattazione, la conversione ecc. Dovessero essere nei filtri –
Ci sono dei campi che devono passare attraverso questa conversione e ho pensato che la logica si sarebbe ripetuta nel controller –