在ng-options上使用filter来更改显示的值

我有一个价格数组( 1.99 …等),我想在<select>显示。

我想使用Angular的ng-options

 <select ng-model="create_price" ng-options="obj for obj in prices"/> 

由于它显示在上面,它将生成1.99 …的select

但是我想在代码中使用一个filter,每当单词“价格” (或类似的东西),代码将运行一个函数来改变浮点数string和呈现( free0.99$1.99$ …等)。

我有办法做到这一点?

谢谢

有一个更好的方法:

 app.filter('price', function() { return function(num) { return num === 0 ? 'free' : num + '$'; }; }); 

然后像这样使用它:

 <select ng-model="create_price" ng-options="obj as (obj | price) for obj in prices"> </select> 

这样,filter对于单个值是有用的,而不是仅对数组进行操作。 如果你有对象和相应的格式filter,这是非常有用的。

filter也可以在代码中直接使用,如果你需要的话:

 var formattedPrice = $filter('price')(num); 

您想创build自定义filter,如:

 app.filter('price', function() { return function(arr) { return arr.map(function(num){ return num === 0 ? 'free' : num + '$'; }); }; }); 

像这样使用它:

 <select ng-model="create_price" ng-options="obj for obj in prices | price"> {{ obj }} </select> 

赦免伪代码

 data-ng-options="( obj.property | myFilter ) for obj in objects" app.filter('myFilter', function() { return function(displayValue) { return (should update displayValue) ? 'newDisplayValue' : displayValue; });