スタディのリストを取得する 1 つのメイン json 呼び出しを使用して、ツリーのような構造を構築しようとしています。これから、さらに別の json 呼び出しで studyId を使用します。このクエリには常にデータがあるとは限りません。未定義をどのように処理しますか? ただし、これを正しく機能させることができなかったので、それは私の主な問題ではないかもしれません。私はこの投稿に目を光らせているので、お気軽に質問してください。かなり迅速に対応する必要があります。ありがとう!
//================================================ =====\
function StudyInfo(data) {
this.StudyId = ko.observable(data.StudyId);
this.Name = ko.observable(data.Name);
this.Title = ko.observable(data.Title);
this.Samples = ko.observableArray([]); // this field is not mapped in lazy load.
}
function SampleInfo(data) {
this.Name = ko.observable(data.Name);
}
function viewModel() {
var self = this;
self.Studies = ko.observableArray([]);
var request = $.getJSON("/api/studies");
request.done(function (data) {
var mappedStudies = $.map(data, function (item) {
// now get study
var study = new StudyInfo(item);
study.Samples(self.getSamples(study.StudyId));
return study;
});
self.Studies(mappedStudies);
});
request.fail(function (data) {
// error stuff not important in example
});
self.getSamples = function (StudyId) {
var request = $.getJSON("/api/samples/"+StudyId());
request.done(function (data) {
var mappedSamples = $.map(data, function (item) {
var sample = new SampleInfo(item);
return sample;
});
return mappedSamples;
});
request.fail(function (data) {
// error stuff
});
};
}
//================================================ =====\
<!--- list that resembles a tree -->
<ul data-bind="foreach: Studies()">
<li><a><span data-bind="text: Name"></span></a>
<ul data-bind="foreach: Samples">
<li><a><span data-bind="Title"></span></a>
</ul>
</li>
<ul>
//================================================ =====\