Ich versuche, einige komplexe Bindung mit Knockout (zumindest für einen Neuling wie mich) zu tun.knockout.js rekursive Bindung
Betrachten Sie die folgenden Daten:
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>
Ok, dass der einfache Teil war.
Der schwierige Teil ist, dass, wenn ein Element in der Liste ausgewählt ist, wenn dieses Element Kinder hat, ein neues Auswahlfeld darunter angezeigt werden sollte. Seine Datenquelle wären die Kinder des ausgewählten Elements in der ersten Auswahlbox. Natürlich könnte es mit jeder Tiefe weitergehen.
Wie soll ich dieses Problem mit Knockout lösen?
Ich habe eine Probe zusammen, was ich habe bisher auf jsfiddle: http://jsfiddle.net/graphicsxp/qXZjM/
ist eine, die mir in den Sinn kommt, ist eine Vorlage mit derselben Auswahlbox innen zu verwenden und die Vorlage an das Tabellenelement anhängen, wenn ein Element mit Kindern ausgewählt. Es ist noch nicht klar, wie ich es machen werde, aber denkst du, dass ich auf dem richtigen Weg bin? – Sam