2016-12-17 7 views
2

私は、アプリケーション内の複数のリンクのドロップダウンメニューを作成しようとしています。angularjs ui.router activestate with dropdown

以下のリンクの1つがアクティブな間、「アクティブ」になっています。

私がアクティブになるように私のドロップダウンにリンクを持って、私はアクティブにするドロップダウンを得たが、私はそれらの両方が一緒に作業していない飽きない...一つだけが動作している...

ここではコードです、誰かが私に何か間違っていることを指摘することができれば!

<li class="dropdown" ui-sref-active-eq="active"> 
    <a class="dropdown-toggle" data-toggle="dropdown"> 
     Main 
     <span class="caret"></span> 
    </a> 

    <ul class="dropdown-menu"> 
     <li ui-sref-active="active"> 
      <a ui-sref="Debut1"> 
       Items 
      </a> 
     </li> 
    </ul> 
</li> 

ここでEDIT

は問題 https://plnkr.co/edit/Ffe9FLz4TuihkVjby6RU

ANSWER

app.js

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

app.config([ 
    '$stateProvider', 
    '$urlRouterProvider', 
    function ($stateProvider, $urlRouterProvider) { 
     var accueil = { 
      name: 'accueil', 
      url: '/Accueil', 
      templateUrl: '/app/views/accueil/accueil.html' 
     } 

     var debutant = { 
      name: 'debut', 
      url: '/Debut', 
      abstract: true, 
      templateUrl: '/app/views/debut/debut.html' 
     } 

     var debutant1 = { 
      name: 'debut.one', 
      url: '/One', 
      parent: debutant, 
      templateUrl: '/app/views/debut/debut1.html' 
     } 

     var debutant2 = { 
      name: 'debut.two', 
      url: '/Two', 
      parent: debutant, 
      templateUrl: '/app/views/debut/debut2.html' 
     } 

     $stateProvider.state(accueil); 
     $stateProvider.state(debutant); 
     $stateProvider.state(debutant1); 
     $stateProvider.state(debutant2); 
     $urlRouterProvider.otherwise('/Accueil'); 
    } 
]); 

index.htmlを

を示しplunkrです
<div class="collapse navbar-collapse"> 
    <ul class="nav navbar-nav"> 
     <li ui-sref-active="active"> 
      <a ui-sref="accueil"> 
       Accueil 
      </a> 
     </li> 

     <li class="dropdown" ui-sref="debut" ui-sref-active="active"> 
      <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> 
       Début 
       <span class="caret"></span> 
      </a> 

      <ul class="dropdown-menu"> 
       <li ui-sref-active="active"> 
        <a ui-sref="debut.one"> 
         Début 1 
        </a> 
       </li> 

       <li ui-sref-active="active"> 
        <a ui-sref="debut.two"> 
         Début 2 
        </a> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

debut.html

<div ui-view></div> 
+0

ui-sref-active-eqをui-sref-activeで動作させる方法は誰も知りませんか?私はNav liとActiveのドロップダウンでActiveを行う最初の人であってはなりません – Vince

+0

あなたはどのバージョンのui-routerを使用していますか?バージョン0.2.13によると: 現在の状態がui-srefの状態または任意の子である場合、ui-sref-active = "active"が現在アクティブなクラスを設定するようになりました ui-sref-active-eq = "active "ui-sref-activeの以前の反復として動作し、正確な状態のクラスを設定します –

+0

" 0.3.2 " – Vince

答えて

1

私は数日後、私の問題の本当の解決策を見つけました。

@John Spiteriのソリューションでコンソールエラーが発生したためです。

UI--SREFアクティブ= "{ 'アクティブ': 'デビュー**'}"

だから解決策はこの部分である

<li class="dropdown" ui-sref-active="{'active': 'debut.**'}"> 
    <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> 
     Début 
     <span class="caret"></span> 
    </a> 

    <ul class="dropdown-menu"> 
     <li ui-sref-active="active"> 
      <a ui-sref="debut.one"> 
       Début 1 
      </a> 
     </li> 
    </ul> 
</li> 

に私の見解を切り替えます。**は親の子と一致します!

0

UI-SREF-アクティブは、すべての子ルートのアクティブなままになります...問題は、UI-ルータの実装です。

私は論理的にルートチェインを考えると、このようになります。

'/' = 'app.inventory' //抽象的:真 - おそらく共有し解決するか、データ
'/在庫/' = 'app.inventory.list'
'/在庫/靴/' = ' app.inventory.shoes '

私はui-sref-activeを動作させるために私のアプローチ(思考)を変えなければなりませんでした。

開始(デタラティブ)ルートを親にしてから、子との唯一の部分を入れ替えます。

あなたは 'Accueilの' 状態がアクティブに滞在していることがわかります

...

$stateProvider 
     .state('accueil', { 
     url: '/accueil', 
     views: { 
      '[email protected]': { 
      templateUrl: './accueil.html' 
      } 
     } 
     }) 
     .state('accueil.debutant', { 
     url: '/debutant', 
     views: { 
      '[email protected]': { 
      templateUrl: './debut.html' 
      } 
     } 
     }); 
    } 
また

https://plnkr.co/edit/8u3RhHRiPdhdF1lhWbeM?p=preview

は、...も活躍されて、子供のためのバージョンを追加しました

https://plnkr.co/edit/dXexFM38IUF3uaBGPovL?p=preview

+0

私はドロップダウンを表示している単純なナビゲーションメニューではない私のplunkrを理解する時間は同じことをしていない – Vince

+0

@ここのヴィンスは一歩進んでいます...私はあなたを抱きしめているアイデアを得ています。あなたはそこからボールを​​取る必要があります... https://plnkr.co/edit/PWbS4RwcRXlIo30npJRB?p=preview –

+0

私の最初の投稿で持っているのと同じ問題を表示します – Vince