<!DOCTYPE html>
<html>

  <head>
    <script data-require="angular.js@1.3.7" data-semver="1.3.7" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js"></script>
    <link href="angular.treeview.css" rel="stylesheet" />
    <script src="angular.treeview.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body>
<div ng-app="myApp">
  <div ng-controller="myController">

    <div>
      <input type="button" value="TREE MODEL 1" data-ng-click="roleList = roleList1" /> <input type="button" value="TREE MODEL 2" data-ng-click="roleList = roleList2" />
    </div>

    <div style="margin:10px 0 30px 0; padding:10px; background-color:#EEEEEE; border-radius:5px; font:12px Tahoma;">
      <span><b>Selected Node</b> : {{mytree.currentNode.roleName}}</span>
    </div>

    <!--
      [TREE attribute]
      angular-treeview: the treeview directive
      tree-id : each tree's unique id.
      tree-model : the tree model on $scope.
      node-id : each node's id
      node-label : each node's label
      node-children: each node's children
    -->
    <div
      data-angular-treeview="true"
      data-tree-id="mytree"
      data-tree-model="roleList"
      data-node-id="roleId"
      data-node-label="roleName"
      data-node-children="children" >
    </div>

  </div>
</div>
  </body>

</html>
(function(){
  
  //angular module
  var myApp = angular.module('myApp', ['angularTreeview']);

  //test controller
  myApp.controller('myController', function($scope,$http){

  	//test tree model 1
    $http.get('roleList1.json').then(function (res) {
      $scope.roleList1 = res.data;

      //roleList1 to treeview
      $scope.roleList = $scope.roleList1;
    });

  	//test tree model 2
    $http.get('roleList2.json').then(function (res) {
      $scope.roleList2 = res.data;
    });
  
  });
  
})();
div[data-angular-treeview] {
  /* prevent user selection */
  -moz-user-select: -moz-none;
  -khtml-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;

  /* default */
  font-family: Tahoma;
  font-size:13px;
  color: #555;
  text-decoration: none;
}

div[data-tree-model] ul {
  margin: 0;
  padding: 0;
  list-style: none; 
  border: none;
  overflow: hidden;
}

div[data-tree-model] li {
  position: relative;
  padding: 0 0 0 20px;
  line-height: 20px;
}

div[data-tree-model] li .expanded {
  padding: 1px 10px;
  background-image: url("http://cfile23.uf.tistory.com/image/205B973A50C13F4B19D9BD");
  background-repeat: no-repeat;
}

div[data-tree-model] li .collapsed {
  padding: 1px 10px;
  background-image: url("http://cfile23.uf.tistory.com/image/1459193A50C13F4B1B05FB");
  background-repeat: no-repeat;
}

div[data-tree-model] li .normal {
  padding: 1px 10px;
  background-image: url("http://cfile23.uf.tistory.com/image/165B663A50C13F4B196CCA");
  background-repeat: no-repeat;
}

div[data-tree-model] li i, div[data-tree-model] li span {
  cursor: pointer;
}

div[data-tree-model] li .selected {
  background-color: #aaddff;
  font-weight: bold;
  padding: 1px 5px;
}
/*
	@license Angular Treeview version 0.1.6
	ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
	License: MIT
*/

(function(f){f.module("angularTreeview",[]).directive("treeModel",function($compile){return{restrict:"A",link:function(b,h,c){var a=c.treeId,g=c.treeModel,e=c.nodeLabel||"label",d=c.nodeChildren||"children",e='<ul><li data-ng-repeat="node in '+g+'"><i class="collapsed" data-ng-show="node.'+d+'.length && node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="expanded" data-ng-show="node.'+d+'.length && !node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="normal" data-ng-hide="node.'+
d+'.length"></i> <span data-ng-class="node.selected" data-ng-click="'+a+'.selectNodeLabel(node)">{{node.'+e+'}}</span><div data-ng-hide="node.collapsed" data-tree-id="'+a+'" data-tree-model="node.'+d+'" data-node-id='+(c.nodeId||"id")+" data-node-label="+e+" data-node-children="+d+"></div></li></ul>";a&&g&&(c.angularTreeview&&(b[a]=b[a]||{},b[a].selectNodeHead=b[a].selectNodeHead||function(a){a.collapsed=!a.collapsed},b[a].selectNodeLabel=b[a].selectNodeLabel||function(c){b[a].currentNode&&b[a].currentNode.selected&&
(b[a].currentNode.selected=void 0);c.selected="selected";b[a].currentNode=c}),h.html('').append($compile(e)(b)))}}})})(angular);
[
  { "roleName" : "User", "roleId" : "role1", "children" : [
    { "roleName" : "subUser1", "roleId" : "role11", "children" : [] },
    { "roleName" : "subUser2", "roleId" : "role12", "children" : [
      { "roleName" : "subUser2-1", "roleId" : "role121", "children" : [
        { "roleName" : "subUser2-1-1", "roleId" : "role1211", "children" : [] },
        { "roleName" : "subUser2-1-2", "roleId" : "role1212", "children" : [] }
      ]}
    ]}
  ]},

  { "roleName" : "Admin", "roleId" : "role2", "children" : [] },

  { "roleName" : "Guest", "roleId" : "role3", "children" : [] }
]
[
  { "roleName" : "User", "roleId" : "role1", "children" : [
    { "roleName" : "subUser1", "roleId" : "role11", "collapsed" : true, "children" : [] },
    { "roleName" : "subUser2", "roleId" : "role12", "collapsed" : true, "children" : [
      { "roleName" : "subUser2-1", "roleId" : "role121", "children" : [
        { "roleName" : "subUser2-1-1", "roleId" : "role1211", "children" : [] },
        { "roleName" : "subUser2-1-2", "roleId" : "role1212", "children" : [] }
      ]}
    ]}
  ]},

  { "roleName" : "Admin", "roleId" : "role2", "children" : [
    { "roleName" : "subAdmin1", "roleId" : "role11", "collapsed" : true, "children" : [] },
    { "roleName" : "subAdmin2", "roleId" : "role12", "children" : [
      { "roleName" : "subAdmin2-1", "roleId" : "role121", "children" : [
        { "roleName" : "subAdmin2-1-1", "roleId" : "role1211", "children" : [] },
        { "roleName" : "subAdmin2-1-2", "roleId" : "role1212", "children" : [] }
      ]}
    ]}
  ]},

  { "roleName" : "Guest", "roleId" : "role3", "children" : [
    { "roleName" : "subGuest1", "roleId" : "role11", "children" : [] },
    { "roleName" : "subGuest2", "roleId" : "role12", "collapsed" : true, "children" : [
      { "roleName" : "subGuest2-1", "roleId" : "role121", "children" : [
        { "roleName" : "subGuest2-1-1", "roleId" : "role1211", "children" : [] },
        { "roleName" : "subGuest2-1-2", "roleId" : "role1212", "children" : [] }
      ]}
    ]}
  ]}
]