knockout-sortable - simple list

https://github.com/rniemeyer/knockout-sortable

by Francesco Frustaci

HTML

<script src="http://knockoutjs.com/downloads/knockout-2.2.1.debug.js"></script>
<script src="https://rawgithub.com/rniemeyer/knockout-sortable/master/build/knockout-sortable.js"></script>
<script id="nodeTmpl" type="text/html">
    <li>
        <a href="#" data-bind="text: name"></a>
        <div>
           <ul data-bind="sortable: { template: 'nodeTmpl', data: $data.children }"></ul>            
        </div>
    </li>
</script>

<ul data-bind="sortable: { template: 'nodeTmpl', data: root }"></ul>

CSS

ul { min-height: 50px; }
li { padding: 20px; margin: 5px; border: solid 1px black; }

JavaScript

var TreeItem = function(name, children) {
   this.name = ko.observable(name);
   this.children = children && ko.observableArray(children);
};


ko.applyBindings({
    root: [
      new TreeItem("A", []),
      new TreeItem("B", [])
    ]
});