2014-01-30 40 views
5

我有一個允許用戶選擇數字的下拉菜單。AngularJS綁定:下拉式綁定字符串,需要數字代替

<body ng-app="myApp"> 
    <div ng-controller="MyCtrl"> 
     <select ng-model="selectedNum" ng-change="numberSelected()"> 
      <option value="10">10</option> 
      <option value="20">20</option> 
      <option value="30">30</option> 
      <option value="40">40</option> 
      <option value="50">50</option> 
     </select> 
    </div> 
</body> 

早在我的控制,我可以通過$ scope.selectedNumber引用所選值

angular.module('myApp', []).controller('MyCtrl', function($scope) { 

    $scope.selectedNum = 10; 

    $scope.numberSelected = function(){ 
     alert(typeof $scope.selectedNum); //alerts string, need this to be a number 
    } 
}); 

Working Fiddle

我新的角度 - 從jQuery的未來我已經習慣了顯式調用Number($('#mySelect')。val()),但是在角度上,該值自動綁定到$ scope。

我的問題:有沒有辦法強制$ scope.selectedNum是類型編號?在我的實際項目中,我使用selectedNum來做一些計算。我想我可以在不同的地方使用Number(..)或parseInt(..),但我想這可能會有點重複和混亂。

回答

7

的問題是,TE 期權價值CDATA在HTML - 所以它是一個在你的代碼。如果您使用的是數字陣列NG選項指令您可能會解決你的問題:

你控制器,你可以添加:

$scope.nums = [10,20,30,40,50]; 

,並在您的視圖:

<select 
     ng-model="selectedNum" 
     ng-change="numberSelected()" 
     ng-options="n for n in nums"> 
</select> 

現在您將在您的控制器功能中獲得一個數字:

$scope.numberSelected = function(){ 
    console.log(typeof $scope.selectedNum, $scope.selectedNum); 
} 

這裏是一個工作小提琴:http://jsfiddle.net/5aHRL/

+0

很好的解釋,謝謝!我有一種感覺,使用ng-options指令可以解決它。 – jlim

+0

你可以在CDATA部分扔更多的光..謝謝.. – user1776573