我正在尝试用淘汰赛做一些复杂的绑定(至少对于像我这样的新手来说)。
考虑以下数据:
var originalData = {
id: 1,
name: "Main",
children: [ { id: 2, name: "bob", children: []}, { id: 3, name: "ted", children: [{id: 5, name:"albert"}, {id: 9, name: "fred"}]} ],
selectedChild: { id: 2, name: "bob" }
};
<table>
<tr>
<td data-bind="text: name"></td>
</tr>
<tr data-bind="if: children().length > 0">
<td>
<select data-bind="options: children,
optionsText: function(item){
return item.name;
},
optionsCaption: 'Choose...'"></select>
</td>
</tr>
好的,这是最简单的部分。
困难的部分是,每当在列表中选择一个项目时,如果该项目有子项,则下方应出现一个新的选择框。它的数据源将是第一个选择框中所选项目的子项。当然,它可以以任何深度继续下去。
我应该如何通过淘汰赛解决这个问题?
我已经汇总了迄今为止在 jsfiddle 上的示例:http: //jsfiddle.net/graphicsxp/qXZjM/