web-dev-qa-db-ja.com

Angular UI、Bootstrap Navbar Collapse and Javascript

UI-Routerにはさまざまな面で問題があります。他のフレームワークと相互作用する方法がわかりません。

すなわち、私はBootstrap 3のnavbar collapseモジュールを実装しようとしています。

<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Project name test</a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#contact">Contact</a></li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</div>

これはBootstrap Webサイトから直接のものであり、独自の.htmlページ内で正常に動作します。

問題は、UI-Routerビューに挿入するときです。折りたたみアクションは機能しなくなりました。「データターゲット」関数がターゲットを見つけることができないためです。

Bootstrap 3 with Angular UI?)Angular UI Bootstrapパッケージにはnavbarモジュールがありません。

以下の答えは良いです。参照URL Twitter Bootstrap Navbar with AngularJS-Collapse Not Functioning です。

bootstrap=ネイティブjsプロパティをui-bootstrapディレクティブに置き換える必要があります(ng-clickおよびcollapse):

<nav class="navbar navbar-default" role="navigation">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" ng-click="navbarCollapsed = !navbarCollapsed">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">
        <!-- your branding here -->
      </a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" collapse="navbarCollapsed">
      <!-- your normal collapsable content here -->
    </div>
</nav>

コントローラーで初期値を設定します。

$scope.navbarCollapsed = true;

編集:

Ui-bootstrapの新しいバージョン すべてのコンポーネントのプレフィックス 。それに応じてコードを調整します。 collapse-> uib-collapse

68
user2847643

私の特定の問題は、スコープを中心に展開しました。 ng-repeatを使用してメニュー項目をループしているため、ng-repeat子スコープでnavbarCollapsedにアクセスできませんでした。

解決策は、親スコープの変数にアクセスすることでした。単純なように:

ng-click="$parent.navbarCollapsed = !$parent.navbarCollapsed"

これが同じ問題を抱えている人の助けになることを願っています。

2
user2058054