JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-debug.js"></script>
<script src="https://rawgit.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.debug.js"></script>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
Pool: <span data-bind="text: PoolText"></span>
</h3>
</div>
<div class="panel-body">
<ul id="questions">
<li> <span data-bind="text: QuestionText"></span>
<ul class="list-group" data-bind="foreach: Answers">
<!-- ko if: $parents[0].NextQuestion()===- 1 -->
<li>
<input type="radio" data-bind=" value: Selected, checked: Selected"> <span data-bind="text: AnswerText"></span>
<span data-bind="text: Selected"></span>
</li>
<!-- /ko -->
<!-- ko if: $parents[0].NextQuestion() !==- 1 -->
<li class="list-group-item">
<input type="text" data-bind=" textInput: AnswerText, event:{keyup: $root.selectAnswer}" />
</li>
<!-- /ko -->
</ul>
</li>
</ul>
</div>
<div class="panel-footer"> <pre data-bind="text: ko.toJSON($root, null, 2)"></pre>
</div>
</div>
</div>
JavaScript
function nextQuestionViewModel(id, poolText) {
var me = this;
me.ID = ko.observable(id);
me.PoolText = ko.observable(poolText);
me.QuestionID = ko.observable();
me.QuestionText = ko.observable();
me.NextQuestion = ko.observable();
me.PreviousQuestion = ko.observable();
me.Answers = ko.observableArray([]);
}
var vm = new nextQuestionViewModel();
ko.mapping.fromJS({
"ID": 1,
"PoolText": "Topic",
"QuestionID": 1,
"QuestionText": "Test",
"NextQuestion": -1,
"PreviousQuestion": 0,
"ObjectState": 0,
"Answers": [{
"ID": 1,
"AnswerText": "man",
"QuestionText": "",
"Points": 0.00,
"Selected": 1,
"NextQuestion": 2,
"ObjectState": 0
}, {
"ID": 2,
"AnswerText": "woman",
"QuestionText": "",
"Points": 0.00,
"Selected": 0,
"NextQuestion": 2,
"ObjectState": 0
}]
}, {}, vm);
vm.PoolText('Topic');
vm.ID(1)
ko.applyBindings(vm);