Eu tenho uma matriz de preços ( 0
, 0.99
, 1.99
… etc) que eu quero exibir em .
Eu quero usar as ng-options
do Angular como este
Como é mostrado acima, irá gerar uma seleção de 0
, 0.99
, 1.99
…
Mas eu quero usar um filtro no código tal que toda vez que a palavra ‘preços’ for apresentada (ou algo assim), o código executará uma function para alterar os números flutuantes para seqüências de caracteres e apresentar ( free
, 0.99$
, 1.99$
… etc).
Eu tenho uma maneira de fazer isso?
obrigado
Existe uma maneira melhor:
app.filter('price', function() { return function(num) { return num === 0 ? 'free' : num + '$'; }; });
Então use-o assim:
Dessa forma, o filtro é útil para valores únicos, em vez de operar somente em matrizes. Se você tiver objects e filtros de formatação correspondentes, isso é bastante útil.
Os filtros também podem ser usados diretamente no código, se você precisar deles:
var formattedPrice = $filter('price')(num);
Você deseja criar o filtro personalizado, como:
app.filter('price', function() { return function(arr) { return arr.map(function(num){ return num === 0 ? 'free' : num + '$'; }); }; });
use-o como:
Perdoe o pseudo código
data-ng-options="( obj.property | myFilter ) for obj in objects" app.filter('myFilter', function() { return function(displayValue) { return (should update displayValue) ? 'newDisplayValue' : displayValue; });