2013-11-27 25 views
5

請注意這個例子:在單選按鈕類型的NG-模式的變化

JSFiddle Sample



    <div ng-controller="myCtrl"> 
    var ng-model = {{myValue}} - {{myType}} 

     <input type="radio" value="true" 
    name="boolean" ng-change="logIt()" ng-model="myValue" /> True 
     <input type="radio" value="false" 
    name="boolean" ng-change="logIt()" ng-model="myValue" /> False 

    </div> 
    var myApp = angular.module('myApp',[]); 

    function myCtrl($scope) 
    {  
     $scope.myValue = true; //does not work 
     //$scope.myValue = 'true'; //it does work 
     $scope.myType =(typeof $scope.myValue);  
     $scope.logIt=function(){ 
      $scope.myType =(typeof $scope.myValue); 
     } 
    } 

正如你可以看到最初的typeof boolean類型,但選擇它更改爲字符串的值之後,和真不等於'真'。有什麼辦法可以讓角度保持原有的類型。

在這一點上,我正在考慮寫我自己的指令來控制這種行爲,但它看起來不正確,角度改變了原來的類型,我是否正確?

回答

17

使用ng-value和角度將處理轉換回布爾:

這裏是updated jsfiddle

而必須做的代碼:

<div ng-controller="myCtrl"> 
    <h1>Sample 1- Booleans</h1> 

var ng-model = {{myValue}} - {{myType}} 
    <br /> 
    <input type="radio" ng-value="true" name="boolean" ng-change="logIt()" ng-model="myValue" /> True 
    <input type="radio" ng-value="false" name="boolean" ng-change="logIt()" ng-model="myValue" /> False 
</div> 
+0

有趣的我檢查單選按鈕的文件,並沒有發現異常值http://code.angularjs.org/1.0.8/docs/api/ng .directive:input.radio。 感謝您的快速回復。 – Dalorzo

相關問題