多数の質問があるフォームがあります。各質問にはいくつかの回答があります。フォーム レベルでは、合計スコアや質問数などの計算されたオブザーバブルを作成したいと考えています。formmodel、questionsmodel、answermodel は同じ方法で作成されます。質問モデルは、回答を「認識」しています。これにより、回答数や最大ポイントなどの計算されたオブザーバブルを作成できます。
私の問題は、質問配列を認識しないフォーム モデルです。各質問の回答数は数えられますが、フォームの質問数は数えられません。モデルに何か問題がありますか、それともデータを調査する必要がありますか?
function formViewModel(data) {
var self = this;
var mapping = {
'questions': {
create: function (options) {
return new questionsViewModel(options.data);
}
}
};
var model = ko.mapping.fromJSON(data, mapping, self);
model.numberOfQuestions = ko.computed(function () {
return self.questions().length; // error: self.questions() is not a function
});
return model;
}
function questionsViewModel(data) {
var self = this;
var mapping = {
'answers': {
create: function (options) {
return new answersViewModel(options.data);
}
}
};
var model = ko.mapping.fromJS(data, mapping, self);
model.numberOfAnswers = ko.computed(function () {
return self.answers().length; // no problem
});
return model;
}
function answersViewModel(data) {
var self = this;
var mapping = {};
var model = ko.mapping.fromJS(data, mapping, self);
return model;
}