【发布时间】:2014-06-15 21:52:03
【问题描述】:
我希望能够暂停执行,显示一个对话框,然后当按下某个按钮时,继续执行。
因此,如果用户在我的表单上,然后单击指向不同路线的链接,我希望显示我的对话框,然后如果他们点击该对话框上的确认按钮,则路线继续。
所以我知道有一个 $routeChangeStart 并且它有下一个路由作为第一个参数,但它只包含偶数的名称和一些范围。您可以使用 preventDefault 来停止路由,但我想知道是否有办法在以后继续路由?
所以最好在 routeChangeStart 中执行 event.preventDefault(),然后存储下一个,然后在用户点击确认后,我会选择“下一个”并重做路由。
如何重做路线? 我知道我可以使用 params 对象和 $location 在 originalPath 上执行 str_replace,但我想知道是否有更直接的方法来重新应用路由更改?
【问题讨论】:
-
@RobG 用于页面重新加载,在 Angular 中,更改路由而不更改 url(仅更改哈希)。
-
如果没有人回答您的问题,那么最好的选择是查看路由器的来源,如果不允许这样做,则使用 Angular 1 作为基础创建您自己的路由器。
-
感谢您的建议。我喜欢 90% 在写问题时解决了我的问题,但是解决方案看起来很混乱。还是解决方案还不错,可以按照你说的打包。
-
天哪,我是个傻瓜。大多数人不鼓励 $routeChangeStart ,它使用 next 和 current 的复杂版本,但 $locationChangeStart 只是使用 next 和 current 的 url,从而使一个复杂化变得简单。我会发布一个答案并完成这个。感谢大家的帮助。
标签: javascript angularjs