55 return {
66 restrict : "A" ,
77 scope : {
8- treeSource : "=uiTree"
8+ treeSource : "=uiTree" ,
9+ parent : "=nodeParent"
910 } ,
1011 compile : function ( element , attr ) {
11- var $nodeTemplate = element . find ( "[node]" ) . first ( ) . remove ( ) ;
12- var nodeName = $nodeTemplate . attr ( " node" ) ;
12+ var nodeStr = element . find ( "[node]" ) . first ( ) [ 0 ] . outerHTML ;
13+ element . find ( "[ node]" ) . first ( ) . hide ( ) ;
1314
1415 function preLink ( $scope , $element , $attr ) {
15-
16+
1617 }
1718
18- function postLink ( $scope , $element , $attr , ctrl , $transclude ) {
19+ function postLink ( $scope , $element , $attr ) {
20+ var $originNode = $element . find ( "[node]" ) . first ( ) ;
21+ var $nodeTemplate = $ ( nodeStr ) ;
22+ var $newNode = $ ( nodeStr ) ;
23+ var nodeName = $originNode . attr ( "node" ) ;
1924
20- var treeSourceName = $attr [ "uiTree" ] . replace ( nodeName + "." , "" ) ;
21- console . log ( treeSourceName ) ;
25+ var treeId = "ui_tree_" + Math . floor ( ( Math . random ( ) * 999999999 ) + 1 ) ;
2226
2327 function postCompile ( ) {
24- var $nodeChildrenTemplate = $nodeTemplate . find ( "[node-children]" ) . first ( ) ;
25- var nodeChildrenName = $nodeChildrenTemplate . attr ( "node-children" ) ;
26- $nodeChildrenTemplate . append ( $nodeTemplate . clone ( ) ) ;
27- $nodeChildrenTemplate . attr ( "ui-tree" , nodeChildrenName ) ;
28- var $newNode = $ ( $nodeTemplate [ 0 ] . outerHTML ) ;
29- $newNode . attr ( "ng-repeat" , nodeName + " in treeSource" )
30- $element . append ( $newNode ) ;
28+ $newNode . find ( "[node-children]" ) . first ( ) . append ( $nodeTemplate ) ;
29+ $newNode . attr ( "ng-repeat" , nodeName + " in " + treeId ) ;
30+ $newNode . attr ( "ui-tree-node" , nodeName ) ;
31+ $originNode . replaceWith ( $newNode ) ;
32+ $newNode . show ( ) ;
3133 $compile ( $newNode ) ( $scope ) ;
3234 }
3335
3436 var unwatch = $scope . $watch ( "treeSource" , function ( ) {
35- if ( $scope . treeSource ) {
37+ if ( $scope . treeSource && ! $scope . $isCompiled ) {
38+ $scope [ treeId ] = $scope . treeSource ;
39+ postCompile ( ) ;
40+ unwatch ( ) ;
41+ $scope . $isCompiled = true ;
42+ $scope . __proto__ = $scope . $parent ;
43+ }
44+ } )
45+ }
46+
47+ return {
48+ pre : preLink ,
49+ post : postLink
50+ }
51+ }
52+ } ;
53+ } ) ;
54+
55+ angularUiTree . directive ( "uiTreeNode" , function ( $compile ) {
56+ return {
57+ restrict : "A" ,
58+ scope : {
59+ nodeSource : "=uiTreeNode"
60+ } ,
61+ compile : function ( element , attr ) {
62+ var nodeChildrenStr = element . find ( "[node-children]" ) . first ( ) [ 0 ] . outerHTML ;
63+
64+ function preLink ( $scope , $element , $attr ) {
65+
66+ }
67+
68+ function postLink ( $scope , $element , $attr ) {
69+ var $originNodeChildren = $element . find ( "[node-children]" ) . first ( ) ;
70+ var $newNodeChildren = $ ( nodeChildrenStr ) ;
71+
72+ var nodeChildrenName = $originNodeChildren . attr ( "node-children" ) ;
73+ var nodeId = "ui_tree_node_" + Math . floor ( ( Math . random ( ) * 999999999 ) + 1 ) ;
74+ var nodeName = $attr [ "node" ] ;
75+ var treeSourceName = nodeChildrenName . replace ( nodeName , nodeId ) ;
76+
77+ function postCompile ( ) {
78+ $newNodeChildren . attr ( "ui-tree" , treeSourceName ) ;
79+ $newNodeChildren . attr ( "node-parent" , nodeId ) ;
80+ $originNodeChildren . replaceWith ( $newNodeChildren ) ;
81+ $compile ( $newNodeChildren ) ( $scope ) ;
82+ }
83+
84+ var unwatch = $scope . $watch ( "nodeSource" , function ( ) {
85+ if ( $scope . nodeSource && ! $scope . $isCompiled ) {
86+ $scope [ nodeId ] = $scope . nodeSource ;
3687 postCompile ( ) ;
37- unwatch ( ) ;
88+ unwatch ( ) ;
89+ $scope . $isCompiled = true
3890 $scope . __proto__ = $scope . $parent ;
3991 }
4092 } )
4597 post : postLink
4698 }
4799 }
48- } ;
100+ } ;
49101 } ) ;
50102} ) ( ) ;
0 commit comments