1

ラジオボタンからノックアウトオブザーバブルに値を送信しようとしています。私は何を間違っていますか?(私はところでノックアウトが初めてです..)

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>
4

1 に答える 1

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/

それが役に立てば幸い!

于 2015-07-30T09:08:46.693 に答える