2014-10-28 98 views
0

我正在使用自定义指令刷新我的页面。我用D3编写了我的UI。它是由节点和链接组成的简单图形。如何在Angular JS的节点点击多次调用指令?

这是我正在做的。 当我点击图形的特定节点时,它会展开到它的子图形等等。

对于此以下是控制器

*vrmUI.controller('CompleteViewController', function($scope,$location, $rootScope, $route) { 
    // Assigning data 
    // onDeviceClick is called when node of graph is clicked. 


    $scope.onDeviceClick = function(item){ 
     $rootScope.pageContextObject = $route.current.data; 
     $scope.clickedItem=item; 
     $scope.completeObject =//JSON Data 
     $scope.loadExpandedView=true; 
     $scope.showExpandedView=true; 
    };* 

}); 

相应的HTML是

<div class="content-panel clearfix"> 

    <div id="topoheader" style="font:12px sans-serif"></div> 
     // expandedView directive should get called when ever control goes inside onDeviceClick. 

     <expanded-view ng-show="showExpandedView" 
      ng-if="loadExpandedView" clicked-rack="clickedItem" network-data="completeObject" 
      device-click="onDeviceClick(item)"></expanded-views>  
    </div> 
</div> 

设备点击被称为上点击的图的节点。 和指导是 *

vrmUI.directive('expandedView',function(){ 
    function link(scope,el,attr){ 
    // Processing when clicked 
    } 
    return{ 
     restrict : 'E', 
     link: link, 
     scope : { 
      clickedItem : '=', 
      onDeviceClick : '&deviceClick' 
     } 
    }; 
}); 

*

问:

当我点击一次,它完美的作品,但是当我点击图中的其他节点,我可以看到控制$ scope.onDeviceClick里面去= function(item){但我的指令没有像第一种情况那样被调用。无论如何,我可以做到这一点?请让我知道,如果你需要更多的细节或问题不清楚。

感谢

回答

1

尝试添加以下行至$scope.onDeviceClick函数的开头:

$scope.loadExpandedView=false; 
$scope.showExpandedView=false;