2017-05-04 10 views
0

サイドバーをクリックすると、サブメニューが短く表示され、再び非表示になります。(Angularjs Metronic)サイドバーサブメニュー隠して開いたままにしないでください

Layout.js(slideUpのFUNC。)を二回ナンセンス

私はapp.jsの設定やメニューのIDをチェックするトリガされます。私は、データベースに格納されているIDとサブIDが正しく機能していると確信しています。私は、ページ上のクラスが正しく機能し、正しく配置されていることを確認しました。

しかし、 "open"クラスとそれに関連する "表示ブロック"スタイルに問題があります。それを修正してmetronic layout.cssに残すと、重要な型付けが見えるままになります。しかし、それは再び開き、閉じます。

ありがとうございました。 app.js

var settings = { 
      layout: { 
       pageSidebarClosed: false, // sidebar menu state 
       pageBodySolid: false, // solid body color state 
       pageAutoScrollOnLoad: 1000 // auto scroll to top on page load 
      }, 
      ... 
     }; 

-Metronic.factory app.js

MetronicApp.controller('SidebarController', 
    ['$scope', 'authService', function ($scope, authService) {  

    $scope.SelectMenu = function (id) { 
     $scope.selectedMenu = id; 
    } 

    $scope.SelectChildMenu = function (id) { 
     $scope.selectedChildMenu = id; 
    } 

    $scope.LoadMenus = function() { 
     authService.UserMenus().then(function (response) { 
       $scope.menus = response; 
       Layout.initSidebar(); // init sidebar 
      }, 
      function (error) { 
       alert("Error"); 
      }); 
    }; 
    }]); 
  • サイドバービュー(.htmlの)

    <div class="page-sidebar navbar-collapse collapse"> 
        <ul class="page-sidebar-menu" data-keep-expanded="false" data-auto-scroll="true" data-slide-speed="200" ng-class="{'page-sidebar-menu-closed': settings.layout.pageSidebarClosed}" ng-controller="SidebarController" ng-init="LoadMenus()"> 
         <li class="start" ng:repeat="m in menus" ng-class="{'active open': m.id==selectedMenu}"> 
          <a href={{m.menuAction}} ng-click="SelectMenu(m.id)" > 
           <i class="icon-home"></i> 
           <span class="title">{{m.menuText}}</span> 
          </a> 
          <ul class="sub-menu" style="display: none;"> 
           <li ng:repeat="child in m.children" ng-class="{'active': child.id==selectedChildMenu}" >       
            <a ui-sref="{{child.menuAction}}" > 
             <i class="icon-home"></i> 
             <span class="title">{{child.menuText}}</span> 
            </a>  
           </li> 
          </ul>  
         </li>   
        </ul> 
    </div> 
    
  • で-MetronicApp.controller

    layout.js(Metronicテーマのグローバルスクリプト)

    if (sub.is(":visible")) { 
          jQuery('.arrow', the).removeClass("open"); 
          the.parent().removeClass("open"); 
          debugger;// **This is also triggered immediately after a single click** 
          sub.slideUp(slideSpeed, function() { 
           if (autoScroll === true && $('body').hasClass('page-sidebar-closed') === false) { 
            if ($('body').hasClass('page-sidebar-fixed')) { 
             menu.slimScroll({ 
              'scrollTo': (the.position()).top 
             }); 
            } else { 
             Metronic.scrollTo(the, slideOffeset); 
            } 
           } 
           handleSidebarAndContentHeight(); 
          }); 
         } else if (hasSubMenu) { 
          debugger; //first visit here normally 
          jQuery('.arrow', the).addClass('open'); 
          the.parent().addClass('open'); 
          sub.slideDown(slideSpeed, function() { 
           if (autoScroll === true && $('body').hasClass('page-sidebar-closed') === false) { 
            if ($('body').hasClass('page-sidebar-fixed')) { 
             menu.slimScroll({ 
              'scrollTo': (the.position()).top 
             }); 
            } else { 
             Metronic.scrollTo(the, slideOffeset); 
            } 
           } 
           handleSidebarAndContentHeight(); 
          }); 
         } 
         e.preventDefault(); 
        }); 
    

CSSフローログ(作業と動作していないバージョン)

Working version:

Broken version

+0

ところで、サイドバーのホバーメニューの仕事p一気にしかし、私はデフォルトのサイドバーが必要です – OkurYazar

+0

LoadMenusはapp.jsで2回トリガされました... – OkurYazar

答えて

0

削除NG-コントローラ= "sidebarController" という表現他のビューを持っている場合(メイン.html as me)

関連する問題