【问题标题】:AngularJS and Bootstrap not working with dropdownAngularJS 和 Bootstrap 不能使用下拉菜单
【发布时间】:2014-10-30 04:45:29
【问题描述】:

所以,我的问题涉及为什么我的下拉菜单不适用于我的导航栏。它在所有 HTML 都在一个文档中时有效,但在我使用 ng-include 时无效。我没有使用 Bootstrap 而是 MetroUI-CSS。

index.html

<div id="container">
    <div id="header" ng-include="'app/templates/header.html'"></div><!-- End header container -->
</div>

partial/header.html

<div id="site_nav_bar">
    <nav class="navigation-bar dark fixed-top shadow">
        <nav class="navigation-bar-content">
            <item class="element"><i class="icon-keyboard" style="padding-right: 1em"></i> <a href="index.html">Home</a></item>
            <item class="element-divider"></item>
            <item class="element"><a href="#/about.html">About</a></item>
            <item class="element"><a href="#/contact.html">Contact</a></item>

            <ul class="element-menu">
                <li>
                    <a class="dropdown-toggle" href="#">Blogs</a>
                    <ul class="dropdown-menu" data-role="dropdown">
                        <li>
                            <a href="#" class="dropdown-toggle">Programming Blogs</a>
...
                        </li>

所以基本上,当我点击博客时,它不会下拉菜单。

【问题讨论】:

标签: javascript html angularjs metro-ui-css


【解决方案1】:

Bootstrap 仅在准备好(就绪事件)时评估 DOM,因此,如果您的下拉菜单此时存在,它将起作用,否则如果稍后将其添加到 DOM(例如使用 ng-include),它将获胜不。

在幕后 ng-include 为您操作 DOM 并执行 AJAX 请求以检索您想要包含的 HTML。 bootstrap 不知道这一点,也不会等待 DOM 更新。

为了避免使用bootstrap-ui

【讨论】:

  • 嗯,我认为这有帮助,但我认为这与我的 header.html 部分有关。
  • 当然是,我就是这么说的。这不是文件的内容,而是您如何加载它。无论如何,bootstrap js 并不是为与 AngularJS 一起工作而设计的。
  • 是的,我想这里告诉我如何解决它:github.com/olton/Metro-UI-CSS/issues/325
  • 代替或者编写这个补丁,为什么不使用一个旨在集成 AngularJS 和 Bootstrap 的库呢?它是用纯 AngularJS 编写的(不需要 jQuery),但仍然可以使用相同的 CSS,因此您不必更改布局。在此处查看示例:angular-ui.github.io/bootstrap/#/dropdown 我认为这对您来说是一个更好的解决方案。
  • 我已经尝试通过它告诉我的方式添加引导程序,但它仍然不起作用。
猜你喜欢
  • 2014-02-25
  • 2014-11-16
  • 2017-08-15
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多