我還沒有完全測試這個,我不知道如何讓這個工作在jsfiddle,但這似乎是暫時工作。
的Javascript
var app = angular.module('myApp', []);
app.filter('decimalFormat', function() {
return function (text) {
return parseFloat(text).toFixed(20).replace(/0+$/,'');
};
});
HTML
<div ng-controller="MyCtrl">
Small Number: {{MyNum1 | number:8 | decimalFormat}}<br/>
Very Small Number: {{MyNum2 | number:8 | decimalFormat}}
</div>
後編輯蘭登的評論,添加逗號:
的Javascript
var app = angular.module('myApp', []);
app.filter('decimal', function() {
return function (text) {
var parts = parseFloat(text).toFixed(8).split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
};
});
function MyCtrl($scope) {
$scope.MyNum1 = 0.12345678912;
$scope.MyNum2 = 0.000000100001;
$scope.MyNum3 = 0;
$scope.MyNum3 = 1123123.05;
}
HTML
<div ng-controller="MyCtrl">
Small Number: {{MyNum1 | decimal}}<br/>
Very Small Number: {{MyNum2 | decimal}}<br/>
Zero: {{MyNum3 | decimal}}<br/>
Million: {{MyNum4 | decimal}}<br/>
</div>
是的,這是正確的,除了你不再需要'number:8'過濾器,你應該簡化'decimalFormat'到'decimal'。你輸的唯一東西(那個Angular的數字過濾器對你來說)就是i18n。 http://jsfiddle.net/fH9bM/ – Langdon 2013-04-20 16:17:17
您的編輯版本在過濾器功能中引入了一個額外的大括號,但編輯過於微不足道。我也在自己的版本中爲'toFixed()'調用的地方添加了一個參數,但我認爲這可能會改變你的函數的意圖,以至於不能在這裏建議編輯。 – Danny 2015-06-11 16:40:41