2014-10-28 83 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;