angularjs - 使用 ng-options 上的过滤器来更改显示的值

标签 angularjs filter ng-options

我有一系列价格( 00.991.99 ...等),我想在 <select> 中显示它们.

我想使用 Angular 的 ng-options像这样

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

如上面显示的,它将生成 0 的选择, 0.99 , 1.99 ...

但我想在代码中使用过滤器,以便每次出现“价格”一词(或类似的内容)时,代码都会运行一个函数来将 float 更改为字符串并呈现( 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>

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

如果需要,过滤器也可以直接在代码中使用:

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

关于angularjs - 使用 ng-options 上的过滤器来更改显示的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16644402/

相关文章:

javascript - 具有数组长度条件的 Angular ng-repeat

javascript - html 标记处的表达式与使用 Controller

javascript - 使用 Angularjs 将数组值设置为 Dropdown

javascript - AngularJS 的 ng-options 中正确的语法是什么?

javascript - Angular.js : set default selected from ID

javascript - 查询ISO格式的日期问题

javascript - 从 angularjs 服务更改下拉列表的选定值

在鸡计划中过滤未绑定(bind)。为什么?

python - 使用引发异常的 lambda 过滤列表

php - if 语句分组产品引用 woocommerce