angularjs - Cómo asignar valor booleano al modelo
meta tags angular 4 (1)
Tengo la siguiente vista con dos botones de radio de entrada:
<label>
<input type="radio" name="test" ng-model="fooBar"
value="true" ng-change="logConsole()">
True
</label>
<label>
<input type="radio" name="test" ng-model="fooBar"
value="false" ng-change="logConsole()">
False
</label>
Y mi controlador se ve como:
//Initialization
$scope.fooBar = false;
$scope.logConsole = function () {
console.log("Value is : " + $scope.fooBar);
console.log("Type is : " + typeof $scope.fooBar); //Always displays ''string''
};
Mi problema es que cuando el usuario selecciona cualquiera de los botones de radio, el tipo del modelo fooBar
es siempre una cadena, es decir, el valor es la cadena ''true'' o la cadena ''false'' - Quiero que el tipo sea una Valor verdadero booleano o un valor falso booleano. ¿Cómo puedo almacenar un valor booleano (desde dentro de la vista) en el modelo?
EDIT: Acabo de probar esto y todavía no funciona. Para el atributo de value
, pasé una función que devolvería un valor booleano verdadero o falso, algo como esto:
<input type="text" value="{{getBoolean(''true'')}}....>
$ scope.getBoolean = function (value) {if (value === ''true'') devuelve true; de lo contrario devuelve falso; };
Todavía resulta en una cadena cuando se seleccionan los botones de radio ...
Uno de los comentarios en la documentación dice:
Si bien ng-value no está documentado, es una directiva útil, específicamente cuando está vinculado a un valor booleano.
<input ng-model="foo" type="radio" value="true">
puede no funcionar pero
<input ng-model="foo" ng-value="true" type="radio">
hace.