angularjs - 数字过滤器将数字过滤为两位小数,但不会以这种方式显示

标签 angularjs angularjs-filter

这是我看到的:



该值设置为 160.90 ,但显示为 160.8999999999等等。

<input class="form-control" ng-model="imprint.total" 
    value="{{imprint.total | number:2}}" readonly>

它通过过滤某些输入来获得总数,但本质上它只是价格乘以数量。

最佳答案

value 属性中的值将被 ng-model 覆盖当它在呈现时设置 View 值时的指令。您有一个只读文本框,您也可以从中删除 ng-model。

<input class="form-control" 
       value="{{imprint.total | number:2}}" readonly>

ng-model要格式化实时数据条目,您需要创建一个指令并使用 parsers/formatters来格式化值。

angular.module('app', []).directive('format', ['numberFilter',
  function(numberFilter) {
    return {
      restrict: 'A',
      require: 'ngModel',
      link: function(scope, elm, attr, ngModel) {
        var decPlaces = attr.format || 2;

        function formatter(value) {

          if (value) {
            return numberFilter(value, decPlaces);
          }
        }

        ngModel.$formatters.push(formatter);

      }
    }
  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-init="imprint=164.899999">
  <input class="form-control" value="{{imprint | number:2}}" readonly>

  <input class="form-control" ng-model="imprint" format="2" readonly>

</div>

关于angularjs - 数字过滤器将数字过滤为两位小数,但不会以这种方式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30760310/

相关文章:

javascript - 使用自定义过滤器 angularjs 过滤 2 个属性

angularjs - 忽略时区Angularjs

javascript - 为什么Angular.element常用而不需要注入(inject)?

angularjs - Angular JS 自定义过滤器不起作用

javascript - AngularJS 添加和推送嵌套的 JSON 对象

javascript - ngBind 相当于 NgModelController(或最佳实践)

angularjs - 棱 Angular 分明。如何过滤 Controller 中的动态数组?

javascript - AngularJS:如何使用 $filter 从对象数组中查找对象,给定数组中的属性值数组

javascript - ionic 切换检查属性

javascript - 不使用表单检查 ngModel 的 $pristine 状态