javascript - (Angularjs Metronic)侧边栏子菜单在点击后隐藏并且不保持打开

标签 javascript jquery css angularjs metronic

问题很简单,点击侧边栏后,子菜单短暂出现,然后又隐藏起来。

Layout.js(slideUp func.)触发两次废话

我检查了 app.js 中的设置和菜单的 id。我确信我存储在数据库中的 id 和 sub id 工作正常。我检查了页面上的类是否正常工作并正确放置。

但是“打开”类及其关联的“显示 block ”样式存在问题。如果我去修复它并保留在 metronic layout.css 中,重要的输入仍然可见。但在它再次打开和关闭之前。

感谢您的帮助。

-app.js 中的 Metronic.factory

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

-app.js 中的 MetronicApp.controller

    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");
            });
    };
    }]);
  • 侧边栏 View (.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>   
    
  • 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

最佳答案

删除 ng-controller="sidebarController"表达式,如果其他 View 有( main.html 和我一样)

关于javascript - (Angularjs Metronic)侧边栏子菜单在点击后隐藏并且不保持打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775991/

相关文章:

javascript - 如何在数组中的每个元素的开头和结尾添加一些文本

javascript - 动态创建的 radio 输入不检查 IE7

javascript - 如何在 ASP.NET Datagrid 中使用 Jquery 附加到下拉列表?

jquery - 将 require ('jquery' ) 与 jsdom 一起使用?

html - CSS 定位让我抓狂

javascript - 我应该为 Electron 应用程序中使用的授权调用使用什么重定向 URI?

javascript - 获取 css 样式以覆盖 asp.net-mvc 中页面的整个高度,页面内有多个局部 View

javascript - 定期更改 css 属性并将该值作为文本添加到 div 中

列表项和文本区域的 CSS 垂直对齐问题

html - 短页页脚,无多余标记或 Javascript