私はノックアウト(少なくとも私のような初心者のために)といくつかの複雑なバインディングをしようとしています。knockout.js再帰的バインディング
は、以下のデータを考慮してください。
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]を、それは簡単な部分でした。
難しい部分は、リスト内のアイテムが選択されるたびに、このアイテムに子がある場合は新しい選択ボックスがその下に表示されることです。そのデータソースは、最初の選択ボックスで選択された項目の子になります。もちろん、どんなレベルの深さでも続けることができます。
ノックアウトでこの問題を解決するにはどうすればよいですか?
私は一緒に私はjsfiddleに、これまで持っているもののサンプルを入れている:http://jsfiddle.net/graphicsxp/qXZjM/
1アイデアがあり、内部に同じ選択ボックスで、テンプレートを使用して、子供を持つ項目が選択されたときに、テーブル要素にそのテンプレートを追加することです。私はそれをどうやってやろうとしているのかはまだはっきりしていませんが、私は正しい方向にいると思いますか? – Sam