在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和呈现( free
, 0.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; });