Javascript AngularJS和ng类

Javascript AngularJS和ng类,javascript,json,angularjs,ng-class,Javascript,Json,Angularjs,Ng Class,我有下一个html代码: <div class="collapse navbar-collapse menu-sidebar"> <ul class="nav nav-stacked" id="menu-bar"> <li class="panel dropdown" ng-repeat="m in menuSidebar.links"> <a data-toggle="collapse" data-par

我有下一个html代码:

<div class="collapse navbar-collapse menu-sidebar">
    <ul class="nav nav-stacked" id="menu-bar">
        <li class="panel dropdown" ng-repeat="m in menuSidebar.links">
            <a data-toggle="collapse" data-parent="#menu-bar" data-target="#{{'menuSidebar' + $index}}" href="">
                {{m.text}}
            </a>
            <div id="{{'menuSidebar' + $index}}" class="panel-collapse collapse submenu-sidebar">
                <ul class="nav nav-stacked">
                    <li ng-repeat="s in m.sub" ng-class="{active: s.active}"><a href="{{s.link}}">{{s.text}}</a></li>
                </ul>
            </div>
        </li>
    </ul>
</div>
我想定义div的类,以防任何子级
处于活动状态==true

<div id="{{'menuSidebar' + $index}}" ng-class="active: ..." class="panel-collapse collapse submenu-sidebar">

如何循环遍历所有孩子并确定班级?在这种情况下是否可以使用ng类


谢谢

无需解析所有子级,只需执行以下操作即可在控制器中定义“some_active”变量

<li ng-repeat="s in m.sub" ng-class="{active: s.active}" ng-init="$parent.some_active=$parent.some_active||s.active"><a href="{{s.link}}">{{s.text}}</a></li>
  • 然后你可以用

    <div id="{{'menuSidebar' + $index}}" ng-class="{active:some_active}" class="panel-collapse collapse submenu-sidebar">
    
    
    
    此解决方案还需要修改li的单击处理程序上的某些_活动变量

    如果你不想这样做,其他的解决方案是

    <div id="{{'menuSidebar' + $index}}" ng-class="{active:someActive()}" class="panel-collapse collapse submenu-sidebar">
    
    
    
    其中“active:someActive”是在您的作用域中定义的一个函数,它遍历您的子菜单树,并在某些选项处于活动状态时返回true或false


    总之,它取决于您的布局,以及您是喜欢通知还是脏检查

    我将创建一个范围函数,该函数接受相关链接:

    $scope.hasActiveChildren = function(link) {
        for(var i=0; i < link.sub.length; i++) {
            if(link.sub[i].active) {
                return true;   
            }
        }
    
        return false;
    };
    
    $scope.hasActiveChildren=函数(链接){
    对于(var i=0;i
    然后将其添加到标记中,如上所述:

    <div id="{{'menuSidebar' + $index}}" ng-class="{'active': hasActiveChildren(m)}" class="panel-collapse collapse submenu-sidebar">
    
    
    

    这是

    如果这是正确的,请将其标记为正确答案,以便关闭;)是的,这样我就能拿到分数了
    <div id="{{'menuSidebar' + $index}}" ng-class="{'active': hasActiveChildren(m)}" class="panel-collapse collapse submenu-sidebar">