这就是我所看到的:
该值设置为160.90
,但显示为160.8999999999
等。
<input class="form-control" ng-model="imprint.total"
value="{{imprint.total | number:2}}" readonly>
它通过过滤某些输入来获得总数,但实际上它只是一个价格乘以数量。
答案 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格式化值。
<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;
答案 1 :(得分:2)
使用自定义过滤器,使用toFixed方法将限制十进制值的数量,
App.filter('twoDecimal',function(input, scope){
return function(){
return input.toFixed(2);
}
})
答案 2 :(得分:1)
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;