Sto provando a fare un po 'di rilegatura complessa con knockout (almeno per un principiante come me).knockout.js binding ricorsivo
Considerate i seguenti dati:
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, questa era la parte facile.
La parte difficile, è che ogni volta che un elemento viene selezionato nell'elenco, se questo elemento ha figli, dovrebbe apparire una nuova casella di selezione sotto. La sua origine dati sarebbe i figli dell'elemento selezionato nella prima casella di selezione. Certo, potrebbe continuare con qualsiasi livello di profondità.
Come dovrei risolvere questo problema con knockout?
Ho messo insieme un campione di ciò che ho finora su jsfiddle: http://jsfiddle.net/graphicsxp/qXZjM/
un'idea che mi viene in mente, è quello di utilizzare un modello con la stessa casella di selezione all'interno e aggiungere tale modello all'elemento tabella quando si seleziona una voce con i bambini. Non è ancora chiaro come lo farò, ma pensi che sia sulla strada giusta? – Sam