【问题标题】:Cannot use Bootstrap collapse functionality with Angular routing无法将 Bootstrap 折叠功能与 Angular 路由一起使用
【发布时间】:2015-01-02 08:29:29
【问题描述】:

更新 #2: 我已经实现了一个按钮和 UI Bootstrap,并且在没有 Angular Routing 接管的情况下使菜单正常运行,但是,在选择菜单项后我无法让菜单折叠并重新路由。

更新:根据建议,我已将上述侦听器更新为此(无效):

$('a:not([data-toggle="collapse"])').click(function (e) {
    var url = $(e.currentTarget).attr('href') || '#';
    if (!(url.charAt(0) == '#')) {
        window.location.href = url;
    }
});

这个应用程序的所有 Angular 代码似乎都在 js/compiled.min.js 中 - 如果有问题,肯定会从这里开始,对吧?

我从以前的开发人员那里继承了一些工作,其中有一些让我有点头疼的时髦代码。如果您在 Chrome 中访问 http://www.executionists.com/#/ 并将视口更改为移动设备,您会发现菜单无法像在较大视口中那样工作。

当您单击菜单按钮时,Angular 会尝试路由页面,这当然会导致 404。我一生都无法弄清楚它为什么要尝试路由以及如何防止它。我尝试过的事情。

以此处列出的方式使用 UI Bootstrap(在折叠部分下):http://angular-ui.github.io/bootstrap/

需要注意的一点是,我必须进行以下修复以修复另一个错误,即角度路由不允许浏览器历史记录运行。一个常见的问题,我发现了。但是,当我将修复程序、路由和历史记录功能按照整个站点的需要放置到位时,我怀疑这是我的移动友好型可折叠菜单错误的原因。修复:

// This is required for links to work properly with the browser history
$('[ng-app]').on('click', 'a', function() {
    window.location.href = $(this).attr('href');
});

我不知道该怎么做,甚至不知道如何最好地诊断问题。

【问题讨论】:

    标签: javascript jquery css angularjs twitter-bootstrap


    【解决方案1】:

    您正在定位与该侦听器的所有链接,也许更具体:

    $('a:not([data-toggle="collapse"])').click(function (e) {
        var url = $(e.currentTarget).attr('href') || '#';
        if (!(url.charAt(0) == '#')) {
            window.location.href = url;
        }
    });
    

    【讨论】:

    • 奇怪的是,这根本没有效果,我可以看到。当菜单切换按钮仍尝试通过 Angular 进行路由时,正常链接会正常运行。
    猜你喜欢
    • 2015-09-14
    • 2021-12-12
    • 2021-03-22
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多