5
5
return {
6
6
restrict : "A" ,
7
7
scope : {
8
- treeSource : "=uiTree"
8
+ treeSource : "=uiTree" ,
9
+ parent : "=nodeParent"
9
10
} ,
10
11
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 ( ) ;
13
14
14
15
function preLink ( $scope , $element , $attr ) {
15
-
16
+
16
17
}
17
18
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" ) ;
19
24
20
- var treeSourceName = $attr [ "uiTree" ] . replace ( nodeName + "." , "" ) ;
21
- console . log ( treeSourceName ) ;
25
+ var treeId = "ui_tree_" + Math . floor ( ( Math . random ( ) * 999999999 ) + 1 ) ;
22
26
23
27
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 ( ) ;
31
33
$compile ( $newNode ) ( $scope ) ;
32
34
}
33
35
34
36
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 ;
36
87
postCompile ( ) ;
37
- unwatch ( ) ;
88
+ unwatch ( ) ;
89
+ $scope . $isCompiled = true
38
90
$scope . __proto__ = $scope . $parent ;
39
91
}
40
92
} )
45
97
post : postLink
46
98
}
47
99
}
48
- } ;
100
+ } ;
49
101
} ) ;
50
102
} ) ( ) ;
0 commit comments