angularjs

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.