在URL更改时关闭角度模式 - 控制台中的错误

时间:2014-03-09 18:45:28

标签: angularjs modal-dialog angular-ui-bootstrap

我正在使用Angular bootstrap Modal来显示弹出窗口。单击textarea / browser back按钮外的退格键,我想取消弹出窗口并继续更改URL。默认行为是模态后面的页面发生变化,但模态保持在最顶层。

在模态实例的控制器中,我添加了一个

  

$ scope。$ on('$ routeChangeStart',function(){...});

它可以工作,但是每当再次调用控制器时我都会看到错误。再次调用$ modalInstance.dismiss(),但在库中,它会抛出异常。

这是带有代码和repro步骤的plunkr。观察浏览器控制台是否有错误。

http://plnkr.co/UKXa6uFvy0ODHylMj28s

我做错了什么,或者是modal.js中的错误?

编辑:我认为我的控制器范围不对。为什么AddCtrl的$ scope。$ on(当我导航到MainCtrl时会调用'$ routeChangeStart'?

2 个答案:

答案 0 :(得分:6)

你的傻瓜似乎是对的。

这里有$ modal服务错误:关闭模态窗口后,模态范围仍然存在。所以模态范围继续监听$routeChangeStart,我认为dismiss()的双重调用会导致错误。

此问题将在下一个UI Bootstrap版本中解决。

我更新并评论您的代码,希望此帮助 - http://plnkr.co/edit/daf8dP?p=info

答案 1 :(得分:0)

当路线更改/后退按钮点击here时,我有一个全面的解决方案来解除角度模态。