2017-08-08 60 views
1

正在从数据库中获取10.00,520.00值,但是当我绑定到输入它显示为10和520如何填写文本框中输入精确的十进制值angularjs

例如

<input type="text" ng-model="Amount"> 

    $scope.Amount =10.00 ; 

值结合文本框为10,但我想绑定10.00

+0

如果你的量是整数,那么你必须把它转换成字符串,然后才能显示值像你想,因为你已经在这里输入文本类型 –

回答

4

检查下面的工作代码。

var app = angular.module('plunker', []); 
 
    app.directive('validNumber', function() { 
 
     return { 
 
      link: function (scope, element, attrs, ngModelCtrl) { 
 
       setTimeout(function() { 
 
        var digits = element.val().split('.')[1]; 
 
        digits = digits == null ? 2 : digits.length; 
 
        element.val(parseFloat(element.val()).toFixed(digits)); 
 
       }, 100); 
 
      } 
 
     }; 
 
    }) 
 
    app.controller('MainCtrl', function ($scope) { 
 
     $scope.Amount = 10.0001; 
 

 
    });
<script data-require="[email protected]" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script> 
 
<div ng-app="plunker" ng-controller="MainCtrl"> 
 
    <input type="text" ng-model="Amount" valid-number /> 
 
    {{Amount}} 
 
</div>

+0

很好的解决方案,但如果数据从服务器到达3个地方,那么你的代码将无法工作,因为你已经硬编码了指令中的两个地方。 –

+1

谢谢@Gaurav!我会更新它来处理这种情况。 –

+0

我已经更新了代码 –

1

这似乎是你所需要的

<input type="number" step="0.01" value="0.001"/> 

参照的文ce:input 2 decimal places

相关问题