フレームワークを理解するためのチュートリアルとして angular.js を使用して税金を計算するためのアプリを構築しようとしています。私が最初に気付いたのは、デフォルトではユーザー入力が文字列であると想定されていることです。これにより、明らかに sum 関数が数値演算ではなく文字列連結になります。ここを参照してください。
var taxApp = angular.module('taxApp', []);
taxApp.controller('taxController', function($scope) {
$scope.user_data = {
income_1: 0.00,
income_2: 0.00
};
$scope.total = function() {
return $scope.user_data.income_1 + $scope.user_data.income_2;
};
});
各属性に parseFloat を追加することもできますが、私のアプリには最終的に約 10 ~ 20 のユーザー入力フィールドと 5 ~ 10 の計算が含まれることになります。コントローラーコードのいたるところで parseFLoat を何度も繰り返すことは避けたいと思います。これまでのところ、ng-change を使用してそのようなものしか得られませんでした:
...
$scope.parseFLoat = function(model) {
$scope.user_data[model] = parseFloat($scope.user_data[model]);
};
...
私が気に入らないのは、変数名を渡す必要があるため、モデル名に依存しすぎることです。
おそらくディレクティブを使用して、私が望むものを達成するためのよりスマートな方法はありますか? それとも、Angular には値の型を変更する組み込み関数があるのでしょうか?