각 중첩 할 수있는 중첩 수준에 대해 각 수준을 관찰 가능하게 매핑해야합니다.
관찰 가능한 일련의 질문에만 매핑되었습니다. 그러나 질문에있는 각 대답도 매핑해야합니다. 당신이 텍스트를 퀴즈와 질문의 이름을 편집하고 답변 할 수 있도록하려면 나타납니다 때문에
scope.quizzes = ko.observableArray(
ko.utils.arrayMap(quizzes, function(quiz) {
return {
name: quiz.name,
questions: ko.observableArray(quiz.questions) // not far enough
};
})
);
, 당신은 관찰 할뿐만 아니라 이러한 속성을해야한다.
scope.quizzes = ko.observableArray(
ko.utils.arrayMap(quizzes, function(quiz) {
return {
name: ko.observable(quiz.name),
questions: ko.observableArray(
ko.utils.arrayMap(quiz.questions, function (question) {
return {
text: ko.observable(question.text),
answers: ko.observableArray(
ko.utils.arrayMap(question.answers, function (answer) {
return {
text: ko.observable(answer.text),
valid: ko.observable(answer.valid)
};
})
)
};
})
)
};
})
);
이것은 많은 것처럼 보일 수 있지만 이러한 개체에 바인딩 할 수 있어야합니다. mapping plugin을 사용하면이 과정을 더 쉽게 만들 수 있으며이 매핑이 사용자 대신 수행됩니다.
scope.quizzes = ko.mapping.fromJS(quizzes);
는 제프 메르 카도 덕분 버전을 수정 : http://jsfiddle.net/Zy8Wr/3/ –