@@ -23,6 +23,8 @@ var BRANCH_ARROW_TEMPLATE = angular.element('<div class="md-branch-icon-containe
2323
2424/*@ngInject */ 
2525function  branchDirective ( $parse ,  $document ,  $mdUtil ,  $filter ,  $$mdTree ,  $mdConstant )  { 
26+   var  treeElement ; 
27+ 
2628  return  { 
2729    restrict : 'E' , 
2830    require : [ '?^mdBranchTemplates' ] , 
@@ -407,7 +409,7 @@ function branchDirective($parse, $document, $mdUtil, $filter, $$mdTree, $mdConst
407409          var  arrow  =  $$mdTree . getArrow ( branchElement ) ; 
408410          if  ( arrow  &&  ! $$mdTree . isTip ( branchElement ) )  { 
409411            // open branch by simulating click 
410-             $$mdTree . getTreeElement ( ) . triggerHandler ( { 
412+             getTreeElement ( branchElement ) . triggerHandler ( { 
411413              type : 'click' , 
412414              target : arrow 
413415            } ) ; 
@@ -425,7 +427,7 @@ function branchDirective($parse, $document, $mdUtil, $filter, $$mdTree, $mdConst
425427          var  arrow  =  $$mdTree . getArrow ( branchElement ) ; 
426428          if  ( arrow )  { 
427429            // close branch by simulating click 
428-             $$mdTree . getTreeElement ( ) . triggerHandler ( { 
430+             getTreeElement ( branchElement ) . triggerHandler ( { 
429431              type : 'click' , 
430432              target : arrow 
431433            } ) ; 
@@ -453,7 +455,7 @@ function branchDirective($parse, $document, $mdUtil, $filter, $$mdTree, $mdConst
453455      function  toggleOpen ( branchElement )  { 
454456        if  ( $$mdTree . canOpen ( branchElement )  &&  ! $$mdTree . isTip ( branchElement ) )  { 
455457          // open branch by simulating click 
456-           $$mdTree . getTreeElement ( ) . triggerHandler ( { 
458+           getTreeElement ( branchElement ) . triggerHandler ( { 
457459            type : 'click' , 
458460            target : $$mdTree . getArrow ( branchElement ) 
459461          } ) ; 
@@ -468,13 +470,29 @@ function branchDirective($parse, $document, $mdUtil, $filter, $$mdTree, $mdConst
468470          el  =  $$mdTree . getCheckbox ( branchElement ) ; 
469471        } 
470472        if  ( el )  { 
471-           $$mdTree . getTreeElement ( ) . triggerHandler ( { 
473+           getTreeElement ( branchElement ) . triggerHandler ( { 
472474            type : 'click' , 
473475            target : el 
474476          } ) ; 
475477        } 
476478      } 
477479
480+ 
481+       function  getTreeElement ( branchElement )  { 
482+         if  ( treeElement )  {  return  treeElement ;  } 
483+         treeElement  =  walkForTree ( branchElement ) ; 
484+         return  treeElement ; 
485+       } 
486+ 
487+       function  walkForTree ( el )  { 
488+         var  parent  =  el . parentNode ; 
489+         while  ( parent  &&  parent  !==  document . body )  { 
490+           if  ( parent . nodeName  ===  'MD-TREE' )  {  return  angular . element ( parent ) ;  } 
491+           parent  =  parent . parentNode ; 
492+         } 
493+         return  null ; 
494+       } 
495+ 
478496    } ; 
479497  } 
480498
0 commit comments