数字过滤器过滤器数量减少到两位小数,但不会以这种方式显示

swa*_*ade 4 angularjs angularjs-filter

这就是我所看到的:

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

<input class="form-control" ng-model="imprint.total" 
    value="{{imprint.total | number:2}}" readonly>
Run Code Online (Sandbox Code Playgroud)

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

PSL*_*PSL 10

当在ng-model渲染时设置viewvalue时,value属性中的值将被指令覆盖.你有一个只读文本框,你也可以从中删除ng模型.

<input class="form-control" 
       value="{{imprint.total | number:2}}" readonly>
Run Code Online (Sandbox Code Playgroud)

使用ng-model和格式化实时数据输入,您需要创建一个指令并使用解析器/格式化器来格式化值.

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);

      }
    }
  }
]);
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)