2014-03-30 181 views
0

我想構建一個應用程序來計算稅收使用angular.js作爲tutotrial爲了解我的框架。我注意到的第一件事是,用戶輸入的是默認假定爲字符串,這顯然使得代替數字操作和功能的字符串連接,在這裏看到:如何通過Angular JS更新用戶輸入的模型值?

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; 
    }; 


}); 

http://jsfiddle.net/96beZ/3/

我可以添加parseFloat每個屬性,但事情是我的應用程序最終將有大約10-20用戶輸入字段和5-10計算。我想避免在控制器代碼中的所有地方重複使用parseFLoat。到目前爲止,我只得到了類似的東西用NG-變化:

... 
$scope.parseFLoat = function(model) { 
    $scope.user_data[model] = parseFloat($scope.user_data[model]); 
}; 
... 

http://jsfiddle.net/96beZ/5/

我不喜歡的,雖然事情是,我仍然需要通過變量名,所以這是太型號名稱依賴。

有沒有更聰明的方法來實現我想要的,也許使用指令?或者,也許Angular有一個內置函數來改變值類型?

回答

1

輸入類型更改爲

<label for="income-1">Income 1</label> 
<input type="number" id="income-1" ng-model="user_data.income_1" /> 
<label for="income-2">Income 2</label> 
<input type="number" id="income-2" ng-model="user_data.income_2" /> 

,它會自動轉換爲數字。

在更復雜的情況下(例如,由於某種原因,您需要輸入類型爲文本),您可以輕鬆構建指令以處理轉換,請參閱。 Input model changes from Integer to String when changed

+0

非常感謝!我完全忘記了這種字段類型,我想我仍然不願意使用HTML5新元素。帶有指令的代碼也是我正在查找的代碼,肯定會將其用於某些類型的轉換。 – irwin

相關問題