2017-09-15 9 views
0

私はちょうどAngularJsを使い始めています。私は、値をAPIに照会する簡単なサイトナビゲーションアプリを作っています。現在、私はアコーディオンのサイドバーアプレットを作成しようとしています(親アプリの子アプリケーションの正しい言葉ですか?)、プライマリセクションをロードし、セクションヘッダがクリックされたときにカテゴリをリストします。Angular-UI-Bootstrapアコーディオンが開けた直後に崩壊を続ける

私はエラーを投げずに動作するようになりましたが(私は!)、CSSを適用すると、アコーディオンは臆病で恥ずかしがり、内容を隠す前に、そして何度か何かが起こる前に、何度もヘッダーをクリックしなければなりません。

私が言及したように、私がcssを削除して生のhtml出力を持っているのであれば、それはそうではないので、私はBootstrapの問題を推測しています。ここに私のコードは次のとおりですので、ここで1 app.jsに私のjsファイルを結合するためにうなり声を使用し

index.html

<!DOCTYPE html> 
<html ng-app="navApp" ng-strict-di> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta/css/bootstrap.min.css" /> 
    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> 
    <!--[if lt IE 9]> 
     <script src="../../assets/js/html5shiv.js"></script> 
     <script src="../../assets/js/respond.min.js"></script> 
    <![endif]--> 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular-resource.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular-route.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular-animate.min.js"></script> 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-tpls.min.js" type="text/javascript"></script> 
    <script src="~/Areas/AngularTest/scripts/app.js"></script> 



</head> 
<body ng-cloak> 
    <div ng-controller="menuController"> 
     <div ng-include src="'templates/sidebar.html'"></div> 
    </div> 
</body> 
</html> 

は別々の部品です。

scripts/controllers/navController.js

var navApp = angular.module('navApp', [ 
    'ngResource', 
    'ui.bootstrap', 
    'ngAnimate'  
]); 


navApp.controller('menuController', [ 
    '$scope', 
    'navSectionList', 
    'navGetCategories', 

    function ($scope, navSectionList, navGetCategories) { 
     $scope.navSectionList = navSectionList.query(); 
     $scope.getSectionID = function (event) { 

      var sectionID = event.currentTarget.attributes["data-id"].value; 
      $scope.sectionID = sectionID; 

      $scope.navGetCategories = navGetCategories 
       .getResource(sectionID) 
       .query(); 

     }; 
    } 
], 
    function ($scope) { 
     $scope.oneAtATime = true; 
     $scope.status = { 
      isFirstOpen: true, 
      isFirstDisabled: false 
     }; 
    } 

); 

scripts/services/navService.js

navApp.factory('navSectionList', [ 
    '$resource', function ($resource) { 
     return $resource('/api/navigation/section/list', {}, { 
      query: { method: 'GET', params: {}, isArray: true } 
     }); 
    } 
]); 

navApp.factory('navGetCategories', ['$resource', function ($resource) { 
    var service = { 
     getResource: function (sectionID) { 
      return $resource('/api/navigation/category/' + sectionID, {}, { 
       query: { method: 'GET', params: {}, isArray: true } 
      }); 
     } 
    }; 
    return service; 

}]); 

templates/sidebar.html

<div class="sidebar"> 
    <uib-accordion close-others="oneAtATime"> 
     <div uib-accordion-group class="panel-default" heading="Products" is-open="status.isFirstOpen" is-disabled="status.isFirstDisabled"> 
      <ul> 
       <li>New Arrivals</li> 
       <li>On Sale</li> 
      </ul> 
     </div> 
     <div uib-accordion-group class="panel-default" heading="{{section.name}}" ng-click="getSectionID($event)" ng-repeat="section in navSectionList" data-id="{{section.id}}"> 
      <ul ng-repeat="categories in navGetCategories"> 
       <li ng-show="categories.pid == section.id"> 
        {{categories.name}} 
       </li> 
      </ul> 
     </div> 
    </uib-accordion> 
</div> 

私は実際に何が起こっているのか把握するためにこの時点で十分にAngularJsを理解していません。私はこれを解決するために何をすべきだと思いますか?

答えて

0

ああ、私はもう一度やりました。だからあなたが使用しているbootstrap.cssのバージョンについて注意する必要があることが判明しました。 Angular-UIがサポートしていない場合、面白いビジネスが進行します。

この問題を解決するには、cssを次のものに置き換えてください。

https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css

バージョン4はui.bootstrapために余りに高度でした。

関連する問題