昨日、数値フィールドで書式設定された数値を作成する方法に問題がありましたが、これを実現するようになりました。計算方法に問題があります。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};
}
フィールドの値が千未満である場合には動作しますが、私は1000年に達すると、番号がフォーマットされるだろうカンマで1,000となり、文字列になり、これ以上計算できなくなります。
私が望むのは、(表示するために)数値フィールドを適切にフォーマットすることですが、各数値フィールドで別々の変数を使用せずに計算を行うために真の値を保持しています。
フィドルをご覧ください。ありがとう!
http://jsfiddle.net/aldesabido/1syh7cne/6/
更新フィドル: http://jsfiddle.net/aldesabido/1syh7cne/14/
対処: はmodelCtrl.viewValue(数)の表示のみ影響されるようではない実際の値にmodelCtrl.setViewValue(番号)を変更(しかし、この回避策についてはわからない)。ヘルプみんなのため
http://jsfiddle.net/aldesabido/1syh7cne/18/
ありがとう!
お返事ありがとうございます。しかし、私は実際に表示と計算に2つの別々の変数を使用する必要はありません。私はまだこれに道があることを願っています。 – aldesabido
私は最善を尽くし、他のことは考えられませんでした。あなたは1つの変数を使用して解決策を見つけることができます(それは興味深いものです) –
努力のおかげでありがとう。それは私の番号フィールドのすべてでこれを行うには本当にお尻の痛みです。 – aldesabido