2016-04-05 12 views
0

私はタブのリストを持っています、私は特定のタブをクリックするたびに私の現在の位置を知りたい、私はどのタブを知るためにすべてのタブコントローラの父である私のMainCTRLが欲しい今アクティブです。 ng-clickイベントを使用し、$ location.path()などのサービスを使用して現在のパスを取得しようとしました。しかし、私は前のパスを取得し、現在のパスは取得しません。 Iデモについては、以下のコードともcodepen追加:私は他の部分の特定のタブの基および活性のために無効にされるべきヘッダのいくつかの共通のボタンをしたいので、私は、このようなfeaureが必要な理由 http://codepen.io/Barak/pen/wGPpoZ私は今どのページを知っているか

をタブ。

var app = angular.module('app',[]); 
 

 
app.controller("MainCTRL",["$scope","$location", function($scope,$location){ 
 
    $scope.title = "Hello World"; 
 
    $scope.onWhichPageIAM = function(){ 
 
     console.log("He click me"); 
 
     console.log("location:",$location.path()); 
 
     
 
     } 
 
    
 
    }]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<nav id="tabs_navbar" class="navbar-collapse collapse" ng-app="app" ng-controller="MainCTRL"> 
 
    <ul class="tabs"> 
 
     <li class="tabs-item"> 
 
      <a href="#/AnalyticsSummary" class="tabs-link">Analytics Summary</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/TDCG" class="tabs-link" ng-click="onWhichPageIAM();">TDCG</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/keygas" class="tabs-link" ng-click="onWhichPageIAM();">Key Gas</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/DuvalTriangle" class="tabs-link" ng-click="onWhichPageIAM();">Duval Triangle</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/DuvalPentagon" class="tabs-link" ng-click="onWhichPageIAM();">Duval Pentagon</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/NEI" class="tabs-link" ng-click="onWhichPageIAM();">NEI</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/PTX" class="tabs-link" ng-click="onWhichPageIAM();">PTX</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/GasTrends" class="tabs-link" ng-click="onWhichPageIAM();">Gas Trends</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/DataTable" class="tabs-link" ng-click="onWhichPageIAM();">Data Table</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/Playground" class="tabs-link" ng-click="onWhichPageIAM();">Playground</a> 
 
     </li> 
 
     <li class="tabs-item"> 
 
      <a href="#/AnalyticsSettings" class="tabs-link" ng-click="onWhichPageIAM();">Analytics Settings</a> 
 
     </li> 
 
    </ul> 
 
</nav>

+0

あなたがクリックしているページで、リンク先のページではありません。あなたは '$ routeChangeSuccess'(またはタブを描くディレクティブの内側)の' $ location'を単に調べることを考えましたか? –

+0

window.location.hash?私は私の角型アプリのメインCTRLにそれを書いています。 – Brk

+0

アクティブなwindow.location.hash? onclickイベントですか? – Brk

答えて

1

NGクリックの必要性は、あなたがこのようにそれを使用し、$rootScopeで放送$routeChangeSuccess(@Danielベック提案)信号を使用することができ、ありません: `NG-click`がオンに発火すること

app.controller("MainCTRL",['$rootScope', "$scope","$location", function($rootScope, $scope,$location){ 
    $rootScope.$on('$routeChangeSuccess', function(ev, current, previous) { 
    console.log("State change success"); 
    console.log("location:", current); // info referent to the current state. 
    }); 
}]); 
+0

https://docs.angularjs.org/api/ngRoute/service/ $ルート – slackmart

0

あなたは、アクティブなタブを取得するために$state変数を使用することができます。

<div class="btn-group"> 
     <button class="btn btn-primary btn-sm" uib-btn-radio="'mytabs'" ui-sref-active="active" ng-model="ActiveChild" ui-sref="tab1">FirstTab</button> 
     <button class="btn btn-primary btn-sm" uib-btn-radio="'mytabs'" ui-sref-active="active" ng-model="ActiveChild" ui-sref="tab2">SecondTab</button> 

</div> 

コントローラで$scope.ActiveChild = $state.current.name;を使用してください。

$state.current.name;は、アクティブなタブの名前を示す必要があります。

+0

私はUI-Router – Brk

+0

を使用していません。 { var vm = this; $ scope。$ on( "$ routeChangeStart"、function(event、next、current){ ( "studentsController"、function($ http、$ route、$ scope、$ log) $ log.debug( "RouteChangeStartイベント"); $のlog.debug(イベント);(次) の$ log.debug; $のlog.debug(電流); }); $の範囲に$(。 "$ location.debug(イベント); $ log.debug(" LocationChangeStartイベント "); $ log.debug(イベント); $ log.debug(次); $ log.debug現在); }); –

+0

イベントは次のようになります: '$ routeChangeSuccess'または'$ routeChangeStart' xD – slackmart

関連する問題