Please note this example:
<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);
}
}
As you can see initially typeof is of type boolean but after selecting a value it changes to string, and true is not equal to 'true'. Is there any way I can make angular preserve the original type.
At this point I am considering to write my own directive to control this behavior but it does not look right that angular changes the original type, am I correct?.
Use ng-value
and angular will handle converting back to boolean:
Here is the updated jsfiddle.
And obligatory code:
<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>