Radio Button do not work for bool value.
Not as such. The value attribute holds a string. When you submit the form, that string will be sent to the server. You could use a serialisation technique to store a more complex data structure as a string (for example: JSON) and then decode it on the server.
Angular / By ngodup. Angular radio button input allows the user to select only one option from a list of choices. Angular doesn't have a radio button component, we can use a native HTML radio button or Angular material radio button, or any other UI library radio button.
The correct approach in Angularjs is to use ng-value for non-string values of models.
Modify your code like this:
<label data-ng-repeat="choice in question.choices">
<input type="radio" name="response" data-ng-model="choice.isUserAnswer" data-ng-value="true" />
{{choice.text}}
</label>
Ref: Straight from the horse's mouth
That's an odd approach with isUserAnswer. Are you really going to send all three choices back to the server where it will loop through each one checking for isUserAnswer == true? If so, you can try this:
http://jsfiddle.net/hgxjv/4/
HTML:
<input type="radio" name="response" value="true" ng-click="setChoiceForQuestion(question1, choice)"/>
JavaScript:
$scope.setChoiceForQuestion = function (q, c) {
angular.forEach(q.choices, function (c) {
c.isUserAnswer = false;
});
c.isUserAnswer = true;
};
Alternatively, I'd recommend changing your tack:
http://jsfiddle.net/hgxjv/5/
<input type="radio" name="response" value="{{choice.id}}" ng-model="question1.userChoiceId"/>
That way you can just send {{question1.userChoiceId}} back to the server.
<label class="rate-hit">
<input type="radio" ng-model="st.result" ng-value="true" ng-checked="st.result">
Hit
</label>
<label class="rate-miss">
<input type="radio" ng-model="st.result" ng-value="false" ng-checked="!st.result">
Miss
</label>
I tried changing value="true" to ng-value="true", and it seems to work.
<input type="radio" name="response2" data-ng-model="choice.isUserAnswer" ng-value="true" />
Also, to get both inputs to work in your example, you'd have to give different name to each input -- e.g. response should become response1 and response2.
You might take a look at this:
https://github.com/michaelmoussa/ng-boolean-radio/
This guy wrote a custom directive to get around the issue that "true" and "false" are strings, not booleans.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With