Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Recursive Knockout Templates" />
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <script id="Trunk" type="text/ko">
    <p data-bind="html:$data.name" class="trunk"></p>    
  </script>
  
  <script id="Branch" type="text/ko">
    <p data-bind="html:$data.name" class="branch"></p>    
  </script>
  
  <script id="Twig" type="text/ko">
    <p data-bind="html:$data.name" class="twig"></p>    
  </script>
  
  <script id="Leaf" type="text/ko">
    <p data-bind="html:$data.name" class="leaf"></p>    
  </script>
  
  <script id="Items" type="text/ko">
    <!-- ko if:$data.type==="trunk" -->
     <div data-bind="template:{ name:'Trunk', data:$data }">
    </div>
    <!-- /ko -->
    
    <!-- ko if:$data.type==="branch" -->
     <div data-bind="template:{ name:'Branch', data:$data }">
    </div>
    <!-- /ko -->
    
    <!-- ko if:$data.type==="twig" -->
     <div data-bind="template:{ name:'Twig', data:$data }">
    </div>
    <!-- /ko -->
    
    <!-- ko if:$data.type==="leaf" -->
     <div data-bind="template:{ name:'Leaf', data:$data }">
    </div>
    <!-- /ko -->        
    
    <!-- ko if:recurse() -->
    <div data-bind="template:{ name:'Items', foreach:$data.children }" class="branch">
    </div>
    <!-- /ko -->
  </script>
  
  
  
  <div data-bind="template:{ name:'Items', foreach:$data.items }" class="tree">
  </div>
</body>
</html>
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
andy.monispro
0viewers