昨天,我在如何在我的數字字段中設置一個格式化數字時遇到了問題,但現在我實現了它,我在如何計算時遇到了問題。AngularJS格式化數字計算
的index.html
<div ng-controller="MyCtrl">
<input ng-model="var.value" class="integers" symbol="°" />
<br /><br />
{{var.value * 100}}
</div>
app.js
var myApp = angular.module('myApp',['ui.numeric']);
angular.module('ui.numeric', []).directive('integers', function() {
return {
require: 'ngModel',
restrict: 'EACM',
link: function(scope, element, attrs, modelCtrl) {
scope.$watch(element, function() {
var formatted_number = accounting.formatMoney(element.val(),"", 2,",",".","%s%v");
modelCtrl.$setViewValue(formatted_number);
modelCtrl.$render();
});
element.bind('blur', function() {
var formatted_number = accounting.formatMoney(element.val(),"", 2,",",".","%s%v");
modelCtrl.$setViewValue(formatted_number);
modelCtrl.$render();
scope.$apply();
});
element.bind('focus', function() {
var plainNumber = accounting.unformat(element.val())
if(plainNumber == "0") plainNumber = "";
modelCtrl.$setViewValue(plainNumber);
modelCtrl.$render();
scope.$apply();
console.log("I am focused!")
});
}
};
});
function MyCtrl($scope) {
$scope.var = {"value":1000.36};
}
它的工作原理當字段的值不到千元,但是當我到達,該號碼的格式用逗號1,000它變成了字符串,不能再做計算。
我想要的是正確格式化我的數字字段(用於顯示),但保留真正的值做計算,而不使用每個數字字段中的單獨變量。
請看小提琴。謝謝!
http://jsfiddle.net/aldesabido/1syh7cne/6/
更新撥弄: http://jsfiddle.net/aldesabido/1syh7cne/14/
解決方案: 改變modelCtrl.setViewValue(數字)到modelCtrl.viewValue(數),使得顯示僅會受到影響而不是實際的值(但不知道這個解決方法。)。
http://jsfiddle.net/aldesabido/1syh7cne/18/
感謝您的幫助傢伙!
感謝您的回覆。但我並不想用兩個獨立的變量來顯示和計算。我希望這仍然有辦法。 – aldesabido
我盡力而爲,想不出別的。希望你會找到一個解決方案使用一個變量(這將是一個有趣的) –
感謝您的努力兄弟。在我的所有號碼字段中這樣做都會讓我很痛苦。 – aldesabido