Angular中的动态Bootstrap下拉列表无效

时间:2014-10-03 12:44:12

标签: angularjs twitter-bootstrap drop-down-menu

我试图创建一个带有两级数组下拉列表的Bootstrap导航栏。但是,仅当<li>上的下拉类和<li>上的下拉切换类硬编码时,下拉列表才有效。

由于我的某些菜单项应该有一个下拉列表,而有些则不应该,我想使用ng-class设置它们。是否有任何方法可以延迟ui-bootstrap直到html被编译?

我找到了jQuery(&#39;。dropdown-toggle&#39;)。dropdown();可能会重新初始化下拉列表,但在我的情况下无法识别dropdown()函数。

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li ng-repeat="navItem in structure.navItems" ng-class="{'active': structure.isActive(navItem), 'dropdown': navItem.subItems}"> <a href="{{navItem.href}}" ng-class="{'dropdown-toggle': navItem.subItems}" data-toggle="dropdown">
              {{navItem.name}}
              <span class="caret" ng-if="navItem.subItems"></span>
            </a>

            <!-- start dropdown menu -->
            <ul class="dropdown-menu">
                <li ng-repeat="subItem in navItem.subItems"> <a href="{{subItem.href}}" ng-class="{'active': structure.isActive(subItem)}">
                  {{subItem.name}}
                </a>

                </li>
                <!-- dit kan ook nog: <li class="divider"></li>
              <li class="dropdown-header">Nav header</li>
              -->
            </ul>
            <!-- end dropdown menu -->
        </li>
    </ul>
</div>

1 个答案:

答案 0 :(得分:0)

<div class="card" ng-repeat="story in $ctrl.storiesToEstimate" ng-if="!$ctrl.isAdmin">
    <div class="row">
        <div class="col-10">
            <p> 
                {{ story.storyContent[0] }}
            </p>
        </div>
        <div class="col-2">
            <div 
                uib-dropdown
                dropdown-append-to-body
            >
                <a 
                    class="btn"
                    uib-dropdown-toggle
                    id="dynamic-dropdown"
                    href="#"     
                >
                    Select Scale
                </a>
                <ul 
                    ng-if="$ctrl.arrayOfSessions[0].selected === 'Fibonacci'"
                    uib-dropdown-menu 
                    aria-labelledby="dynamic-dropdown"
                    class="dropdown-menu"
                    role="menu"
                >
                    <li role="menuitem" ng-click="$ctrl.selectedValue(0)">0</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(1)">1</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(2)">2</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(3)">3</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(5)">5</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(8)">8</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(13)">13</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(20)">20</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(40)">40</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue(100)">100</a>
                </ul>
                <ul
                    ng-if="$ctrl.arrayOfSessions[0].selected === 'T-Shirt'"
                    uib-dropdown-menu 
                    aria-labelledby="dynamic-dropdown"
                    role="menu"
                >
                    <li role="menuitem" ng-click="$ctrl.selectedValue('XS')">XS</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('S')">S</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('M')">M</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('L')">L</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('XL')">XL</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('XXL')">XXL</li>
                </ul>
                <ul
                    ng-if="$ctrl.arrayOfSessions[0].selected === 'Gamer'"
                    uib-dropdown-menu
                    aria-labelledby="dynamic-dropdown"
                    role="menu"
                >
                    <li role="menuitem" ng-click="$ctrl.selectedValue('Easy')">Easy</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('Medium')">Medium</li>
                    <li role="menuitem" ng-click="$ctrl.selectedValue('Hard')">Hard</li>
                </ul>
            </div> 
        </div>   
    </div>
</div>

根据各种帖子的解决方案,我设法使其正常运行。 诀窍是,您使用ui-bootstrap的选项dropdown-append-to-body(带有渲染DOM的东西),并且在应用上述其他参数之前使用ng-if。 免责声明:下拉菜单不像twiter的引导程序那样顺畅,但是可以正常工作。