2014-09-20 60 views
2

有沒有辦法防止浮點值在作爲輸入值[type = number]時被四捨五入。按照要求我不能使用任何其他類型。防止輸入[type = number]自動舍入浮點值

例如,我無法將輸入[type = number]與值「3.00」綁定,它會自動舍入爲「3」。

我想使用angularjs綁定值。

angular.module('app', []) 
.controller('controller1', ['$scope', function ($scope){ 
    $scope.value=3.00; 
}]); 

<div ng-app="app" ng-controller="controller1"> 
    <input type="number" ng-model="value" /><br/> 
    {{value}}<br/> 
</div> 

這是鏈接到PEN:http://codepen.io/cyrilpanicker/pen/aqucJ?editors=101

+0

使它成爲一個字符串,然後解析字符串,如果你需要在其上進行計算。 – bowheart 2014-09-20 22:33:19

+0

你的意思是刪除type =「number」屬性?不能這樣做coz type =「number」是一個要求.. – Cyril 2014-09-20 22:34:36

+0

對不起,這可能是非常不可取的。但是,是的,你必須取消'type =「number」'...除非你帶入了大量的jquery .. – bowheart 2014-09-20 22:39:52

回答

0

可以使用number過濾器來格式化數字時,你顯示它。 {{value |編號:2}}將始終用2dp顯示它:

<div ng-app="app" ng-controller="controller1"> 
    <input type="number" ng-model="value" /><br/> 
    {{value | number:2}}<br/> 
</div> 
+0

OP希望輸入值的格式不在顯示器上。 – PSL 2014-09-20 23:35:24

1

這是因爲ngModel在解析後四捨五入值。一種解決方法可能是使用低優先級的自定義指令(-1)而不是ngModel(它在優先級0上運行)處理它,以便它在ngModel解析後運行。並在指令中註冊一個格式化程序,它將使用數字過濾器來重新格式化輸入的模型值。

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

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.value=3.00; 
 
}).directive('formatNum', function(numberFilter){ 
 
    return { 
 
    priority:-1, //<-- Important 
 
    require:'ngModel', 
 
    link:function(scope, elm, attrs, ngModel){ 
 
     ngModel.$formatters.push(format); //Push a formatter 
 
     function format(){ 
 
      return numberFilter(ngModel.$modelValue , 2); //Round off to 2 dec 
 
     } 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller= "MainCtrl"> 
 
<input type="number" ng-model="value" format-num/><br/> 
 
    {{value | number:2}}<br/> 
 
</div>

+0

如果你真的想讓可編輯字段有那麼簡單的'.00',請使用它。可能它根本不值得這樣做,因爲只讀域可以使用數字過濾器。 – PSL 2014-09-20 23:22:40