@@ -19,7 +19,7 @@ function branchDirective($parse, $document, $compile) {
1919  return  { 
2020    restrict : 'E' , 
2121    multiElement : true , 
22-     require : [ 'mdBranch' ,  '?^mdBranch' ,  '?^^ mdTree' ,  '?^mdBranchTemplates' ] , 
22+     require : [ 'mdBranch' ,  '?^mdBranch' ,  '?^mdTree' ,  '?^mdBranchTemplates' ] , 
2323    priority : 1000 , 
2424    terminal : true , 
2525    transclude : 'element' , 
@@ -47,7 +47,6 @@ function branchDirective($parse, $document, $compile) {
4747      var  itemsLength  =  0 ; 
4848      var  isUpdating  =  false ; 
4949      var  ctrl  =  ctrls [ 0 ] ; 
50-       ctrl . treeCtrl  =  ctrls [ 2 ] ; 
5150      var  parentBranchCtrl  =  ctrls [ 1 ] ; 
5251      if  ( isOpen )  {  startWatching ( ) ;  } 
5352
@@ -65,6 +64,12 @@ function branchDirective($parse, $document, $compile) {
6564      ctrl . killWatching  =  killWatching ; 
6665      ctrl . setOpenState ( isOpen ) ; 
6766
67+       // add tree controller and register if available 
68+       if  ( ctrls [ 2 ] )  { 
69+         ctrl . treeCtrl  =  ctrls [ 2 ] ; 
70+         ctrl . registerBranch ( ) ; 
71+       } 
72+ 
6873
6974      function  updateBranch ( newItems ,  oldItems )  { 
7075        if  ( isUpdating )  {  return ;  } 
@@ -84,11 +89,7 @@ function branchDirective($parse, $document, $compile) {
8489          lengthChanged  =  true ; 
8590          itemsLength  =  _itemsLength ; 
8691        } 
87- 
8892        items  =  newItems ; 
89-         // if (newItems !== oldItems || lengthChanged === true) { 
90-         //   // update indexes 
91-         // } 
9293
9394
9495        // Detach and pool any blocks that are no longer in the viewport. 
@@ -103,16 +104,8 @@ function branchDirective($parse, $document, $compile) {
103104          i  +=  1 ; 
104105        } 
105106
106-         // // Collect blocks at the top. 
107-         i  =  0 ; 
108-         // while (i < itemsLength && (blocks[i] === null || blocks[i] === undefined)) { 
109-         //   _block = getBlock(i); 
110-         //   updateBlock(_block, i); 
111-         //   newBlocks.push(_block); 
112-         //   i += 1; 
113-         // } 
114- 
115107        // Update blocks that are already rendered. 
108+         i  =  0 ; 
116109        while  ( ( blocks [ i ]  !==  null  &&  blocks [ i ]  !==  undefined ) )  { 
117110          updateBlock ( blocks [ i ] ,  i ) ; 
118111          i  +=  1 ; 
@@ -128,22 +121,12 @@ function branchDirective($parse, $document, $compile) {
128121        } 
129122
130123        // Attach collected blocks to the document. 
131-         // if (newBlocks.length) { 
132-         //   parentNode.insertBefore( 
133-         //     domFragmentFromBlocks(newBlocks), 
134-         //     element[0].nextSibling); 
135-         // } 
136124        if  ( newBlocks . length )  { 
137125          element [ 0 ] . parentNode . insertBefore ( 
138126            domFragmentFromBlocks ( newBlocks ) , 
139127            blocks [ maxIndex ]  &&  blocks [ maxIndex ] . element [ 0 ] . nextSibling ) ; 
140128        } 
141129
142-         // notfiy parent their are no child elements 
143-         if  ( itemsLength  ===  0  &&  parentBranchCtrl )  { 
144-           // parentBranchCtrl.disableArrow(); 
145-         } 
146- 
147130        isUpdating  =  false ; 
148131      } 
149132
@@ -273,6 +256,7 @@ function branchController($scope, $mdUtil, $animateCss) {
273256  // vm.killWatching; set in link function 
274257  vm . setOpenState  =  setOpenState ; 
275258  vm . setSelected  =  setSelected ; 
259+   vm . registerBranch  =  registerBranch ; 
276260
277261  if  ( ! $element )  {  return ;  } 
278262  var  arrow  =  $element [ 0 ] . querySelector ( '.md-branch-icon' ) ; 
@@ -285,19 +269,16 @@ function branchController($scope, $mdUtil, $animateCss) {
285269  $scope . $on ( '$destroy' ,  function  ( )  { 
286270    // tree controller may not exist if branch was never opened 
287271    if  ( vm . treeCtrl )  { 
288-       vm . treeCtrl . unregisterBranch ( vm . treeCtrl . hashGetter ( vm ) ) ; 
272+       vm . treeCtrl . unregisterBranch ( vm . treeCtrl . hashGetter ( $scope [ $scope . repeatName ] ) ) ; 
289273    } 
290274  } ) ; 
291275
292276  // register branch if tree controller is accesable 
293-   if  ( vm . treeCtrl )  { 
294-     registerBranch ( ) ; 
295-   } 
296277  function  registerBranch ( )  { 
297-     vm . treeCtrl . registerBranch ( vm . treeCtrl . hashGetter ( vm ) ,  { 
278+     vm . treeCtrl . registerBranch ( vm . treeCtrl . hashGetter ( $scope [ $scope . repeatName ] ) ,  { 
298279      setSelected : setSelected 
299280    } ) ; 
300-     setSelected ( vm . treeCtrl . selected [ vm . treeCtrl . hashGetter ( vm ) ]  !==  undefined ) ; 
281+     setSelected ( vm . treeCtrl . selected [ vm . treeCtrl . hashGetter ( $scope [ $scope . repeatName ] ) ]  !==  undefined ) ; 
301282  } 
302283
303284
@@ -313,7 +294,7 @@ function branchController($scope, $mdUtil, $animateCss) {
313294    var  isSelect  =  $element . attr ( 'select' )  !==  undefined ; 
314295    if  ( isSelect  &&  branchContainsElement ( e . target ) )  { 
315296      var  selected  =  $element . attr ( 'selected' )  !==  undefined ; 
316-       vm . treeCtrl . toggleSelect ( selected ,  vm . treeCtrl . hashGetter ( vm ) ,  $scope [ $scope . repeatName ] ) ; 
297+       vm . treeCtrl . toggleSelect ( ! selected ,  vm . treeCtrl . hashGetter ( $scope [ $scope . repeatName ] ) ,  $scope [ $scope . repeatName ] ) ; 
317298
318299      $element . attr ( 'selected' ,  ! selected ) ; 
319300      if  ( e . target . classList . contains ( 'md-container' ) )  {  // clicked on checkbox 
@@ -458,6 +439,6 @@ function branchController($scope, $mdUtil, $animateCss) {
458439
459440  // set select state 
460441  function  setSelected ( isSelected )  { 
461-     $element . attr ( 'selected' ,  isSelected ) ; 
442+     if   ( $element )   {   $element . attr ( 'selected' ,  isSelected ) ;   } 
462443  } 
463444} 
0 commit comments