Я рассматривал следующий вопрос: Knockout JS treeview with checkboxes, и в итоге я сделал много вложенных циклов foreach, вот пример. http://jsfiddle.net/47d6r/384/, так что мне было интересно, есть ли способ сделать рекурсивный foreach?call foreach рекурсивно в нокаут
HTML (хочу поставить рекурсивный Еогеасп здесь)
<div id='tree2'>
<ul data-bind="foreach: folders">
<li>
<span data-bind="text: name"></span>
<ul data-bind="foreach: folders">
<li>
<span data-bind="text: name"></span>
<ul data-bind="foreach: folders">
<li>
<span data-bind="text: name"></span>
<ul data-bind="foreach: folders">
<li>
<span data-bind="text: name"></span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</ul>
</div>
Javascript
function folder(name) {
var self = this;
this.name = ko.observable(name);
this.folders = ko.observableArray();
this.addFolder = function(name) {
self.folders.push(new folder(name));
}
}
function model() {
var self = this;
this.folders = ko.observableArray()
}
var mymodel = new model();
$(document).ready(function() {
ko.applyBindings(mymodel);
mymodel.folders.push(new folder('Jord'));
mymodel.folders.push(new folder('Mud'));
mymodel.folders.push(new folder('Rock'));
mymodel.folders.push(new folder('Rock1'));
mymodel.folders()[0].addFolder('GroJord');
mymodel.folders()[0].addFolder('ModerJord');
mymodel.folders()[0].folders()[0].addFolder('Jord - Grov Matjord');
mymodel.folders()[0].folders()[0].addFolder('Jord - Fin Matjord');
mymodel.folders()[0].folders()[0].folders()[0].addFolder('Jord Grov Matjord 0 18 verified')
mymodel.folders()[0].folders()[0].folders()[0].addFolder('Jord Grov Matjord unknown')
});
$(function() {
$("#tree2").jstree({
"checkbox": {
"keep_selected_style": false
},
"plugins": ["checkbox"]
});
});