将单选按钮值发送到knockout observable

时间:2013-01-11 21:52:11

标签: knockout.js radio-button observable

我正在尝试将值从单选按钮发送到淘汰可观察对象。我究竟做错了什么? (我是Knockout btw的新手。)

function Question(data) {
this.question= ko.observable(data.question);
this.answers = ko.observableArray(data.answers);
this.explenation = ko.observable(data.explenation );
}

function QuestionViewModel() {
// Data
var self = this;
self.questoin= ko.observable();
var questionNumber = 0;
self.currentAnswer = ko.observable();

self.nextQuestion = function() {
    $.getJSON("json/quiz.json", function(data) {
        var newQuestion = new Question(data[questionNumber]);
        self.question(newQuestion );
    });
    questionNumber++;
}


self.setCurrentAnswer = function(){
    self.currentAnswer = currentAnswerValue;
}
}

ko.applyBindings(new QuestionViewModel());


<ul data-bind="foreach: question">
            <li>
                <text data-bind="text: question">
            </li>
            <li>
                <ul data-bind="foreach: answers">
                    <li>
                        <input type="radio" name="radioAnswer" data-bind="checked: $root.setCurrentAnswer, value: currentAnswerValue">
                        <text data-bind="text: answerValue"></text>
                    </li>
                </ul>
            </li>

        </ul>

“currentAnswerValue”为“true”或“false”,并使用json设置。 (值是正确的,它在我尝试时有效):

<text data-bind="text: currentAnswerValue"></text>

1 个答案:

答案 0 :(得分:0)

以下是获得选择的答案部分:

<强> HTML:

Question:
<ul data-bind="foreach: answers">
    <li>
        <input type="radio" name="group" data-bind="value: itemName, checked: $root.currentAnswer" /> <span data-bind="text: itemName"></span>
    </li>
</ul>
<label data-bind="text: currentAnswer()"></label>

<强> JS /敲除:

var AnswerVM = {
    answers: ko.observableArray([{
        itemName: 'Answer 1'
    }, {
        itemName: 'Answer 2'
    }]),
    currentAnswer: ko.observable()
};

ko.applyBindings(AnswerVM);

尝试一下:

http://jsfiddle.net/5bc66m2h/3/

希望它有所帮助!

相关问题