引导模式隐藏(hide.bs.modal)事件后,$ location.path需要一段时间才能工作

时间:2016-10-12 14:41:32

标签: javascript html angularjs modal-dialog bootstrap-modal

    // show mymodal
    // register an event to route to a different page once modal is closed
    $('#myModal').on('hide.bs.modal', function() {
        if ($location.path() == '/') {
            $location.path('/ser/mynewpath');
            alert("fired"); // just to check the event was fired
        }
    });
    // open the modal
    $('#myModal').modal('show');

我正在使用JavaScript调用bootstrap模式#myModal。一旦我关闭模态,我想将页面指向不同的路径。问题是在关闭模态后需要30秒-1分钟来指导页面。我添加了一个警报来检查事件是否迟到了,但是当我关闭模态时我会收到警报,但页面只是在经过漫长的等待后才被指示。

有时当我点击其他地方时会被解雇。但这种情况并非总是发生 - 有时漫长的等待是不可避免的。

我最初的猜测是因为我正在使用自举模式并使用$ location,当模态关闭时,angular可能无法检测到它。但现在看起来似乎是一个愚蠢的猜测。我也尝试将事件触发器更改为'hidden.bs.modal'但得到了相同的结果。

我会尝试添加角度$ modal,看看是否解决,将发布更新。但同时我很高兴能够理解这种设置延迟背后的原因。

谢谢。

1 个答案:

答案 0 :(得分:1)

由于jquery事件angular不会立即意识到此事件。它将不得不等到下一个摘要周期,这将导致延迟。您尝试使用$scope.$apply

$scope.$apply(function() {
        if ($location.path() == '/') {
            $location.path('/ser/mynewpath');
            alert("fired"); // just to check the event was fired
        }
}