【发布时间】:2014-06-05 03:53:32
【问题描述】:
我有一组由 JSON 驱动的四个级联选择框。根据可用的嵌套数据,会出现一个保管箱,填充与否......除了最后一层外,所有工作正常......我看不出有什么问题,但我确信它很明显......
首先我的绑定..我正在使用“if:...”来确定是否显示下一个级联/嵌套的保管箱...
<select id="cboSpecies" data-bind="options: SearchCriteria.Species, optionsText: 'Name', value: Species, optionsCaption: 'Choose...'"></select>
<div data-bind="if: Species">
<select data-bind='options: Species().System, optionsText: "Name", optionsCaption: "Select...", value: System'></select>
</div>
<div data-bind="if: System">
<select data-bind='options: System().Syndrome, optionsText: "Name", optionsCaption: "Select...", optionsValue: "Name", value: Syndrome'></select>
</div>
<div data-bind="if: Syndrome">
<select data-bind='options: Syndrome().Diagnosis, optionsText: "Name", optionsCaption: "Select...", optionsValue: "Name", value: Diagnosis'></select>
</div>
接下来是我的淘汰码:
function SearchModel() {
this.SearchCriteria = "";
this.Species = ko.observable();
this.System = ko.observable();
this.Syndrome = ko.observable();
this.Diagnosis = ko.observable();
}
var model = new SearchModel();
model.SearchCriteria = json;
最后是 JSON 字符串本身..
var json = {
"Species": [{
"ID": 3,
"Name": "Feline",
"System": []
}, {
"ID": 1,
"Name": "Ovine",
"System": []
}, {
"ID": 2,
"Name": "Canine",
"System": [{
"ID": 1,
"Name": "Cardiovascular System",
"Syndrome": [{
"ID": 1,
"Name":"Blood",
"Diagnosis":[
{
"Name": "Diag 1"},
{
"Name": "Diag 2"
}]
},
{
"ID": 2,
"Name": "Heart/Aorta",
"Diagnosis":[{"Name": "Diag 3"}
]}]
},{
"ID": 1,
"Name": "GI System /Abdomen",
"Syndrome": [
{
"ID": 1,
"Name":"Abdomen",
"Diagnosis":[]
},
{
"ID": 2,
"Name":"Abomasum",
"Diagnosis":[]
}]
}]
}]
};
一切正常,直到最后一个没有被填充的保管箱......
我这里有一个小提琴:
要进行测试,请选择“犬类”,然后选择“心血管”,然后选择“血液”。 我希望最终的 Dropbox 有数据“Diag 1”和“Diag 2”
谢谢。
【问题讨论】:
标签: json knockout.js