【问题标题】:ngView disappears when navbar dropdown is clicked单击导航栏下拉菜单时,ngView 消失
【发布时间】:2015-11-13 13:35:31
【问题描述】:

我正在尝试实现一个包含导航栏的页面(http://getbootstrap.com/components/ 参见导航栏),并且该页面的内容是通过 ngView 从部分 html 插入的。但是,当单击下拉菜单时,整个 ngView 部分会消失。

这就是我定义 ngView 的方式:

<div ng-controller="MainCtrl">
    <div ng-view></div>
</div>

这是一个笨蛋:http://plnkr.co/edit/l8GVWUiq2HRL3lXhu9xd?p=preview (请通过单击“在单独的窗口中启动预览”打开以查看导航栏) 点击导航栏按钮“下拉”。

如果我调试屏幕,我可以看到 ngView 根本没有呈现,我看到的只是:

<!-- ngView:  -->

有什么想法吗?

【问题讨论】:

    标签: angularjs angular-ui angular-ui-bootstrap ngroute ng-view


    【解决方案1】:

    你应该把这个添加到 ul 标签中:

    ng-click="$event.preventDefault();"
    

    【讨论】:

    • 跟进:虽然导航栏菜单点击现在可以工作,但菜单项点击不做任何路由。查看更新的 plunkr:plnkr.co/edit/l8GVWUiq2HRL3lXhu9xd?p=preview
    • 基本上,您不想禁止所有链接的路由,因此只需正确使用 $preventDefault 即可。我在here添加了另一个动作路线视图以下是一些可能对您有用的资源:@​​987654323@,phonecat example
    • 我明白了——我从字面上接受了你的建议并将其放入
    • 为每个 li 添加 $preventDefault 是一种不好的做法(这只是一个快速修复)相反,您可以通过正确使用路由器来处理视图 :)
    • 该评论应该由框架生成。如果您的路由没有按预期工作,请查看 $routeProvider 是否配置正确。这可能会有所帮助:docs.angularjs.org/api/ngRoute/directive/ngView
    【解决方案2】:

    只需从下拉链接按钮中的&lt;a&gt; 元素中删除href="#" 属性,它就会停止干扰您的路由。

    <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多