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

时间:2015-06-10 15:07:34

标签: angularjs angularjs-filter

这就是我所看到的:

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

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

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

3 个答案:

答案 0 :(得分:10)

ng-model指令在呈现时设置viewvalue时,value属性中的值将被<input class="form-control" value="{{imprint.total | number:2}}" readonly> 指令覆盖。你有一个只读文本框,你也可以从中删除ng模型。

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); } } } ]);并格式化实时数据条目,您需要创建一个指令并使用parsers/formatters格式化值。

&#13;
&#13;
<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>
&#13;
error C2665: 'cereal::make_nvp' : none of the 3 overloads could convert all the argument types ... while trying to match the argument list '(const std::string, const std::string)
&#13;
&#13;
&#13;

答案 1 :(得分:2)

使用自定义过滤器,使用toFixed方法将限制十进制值的数量,

App.filter('twoDecimal',function(input, scope){

return function(){

   return input.toFixed(2);

  }

})

答案 2 :(得分:1)

&#13;
&#13;
var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
  $scope.data = { name: ''};
});
app.directive('twoDecimal', function () {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function (scope, element, attrs, ngModel) {
      
      ngModel.$formatters.push(function(value) {debugger
        return Math.round(value * 100) / 100;
      });
      
    }
  }
});
&#13;
<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.2.x" src="http://code.angularjs.org/1.2.15/angular.js" data-semver="1.2.15"></script>
    <script src="app.js"></script>
  </head>

  <body  ng-app="app">
    <div ng-controller="MainCtrl">
    <input type="button" value="set to '12.23453'" ng-click="data.name='12.23453'"/>
    <input type="button" value="set to '34.3333'" ng-click="data.name='34.3333'"/>
    <input two-decimal ng-model="data.name" />
    <pre>model is: {{data.name}}</pre>
    </div>
  </body>

</html>
&#13;
&#13;
&#13;