在下一条路线上杀死上一条路线的控制器

时间:2014-07-24 19:11:08

标签: angularjs asynchronous routes angularjs-scope

我的Angular应用程序中存在一个问题,如果我到达一个控制器视图,该视图会进行$http.get()异步调用,并在promise可以解决之前导航到另一个控制器视图,那么我实际上最终会有在完全不同的控制器上执行一个控制器的功能。

例如,如果第一页执行$http.get(),然后在$window.location = data.goToUrl函数中调用.success()。然后,如果我打开第一页,然后在.success()火灾之前离开,那么当我到达完全不同的页面时,我正在导航到当第一页的.success()方法最终启动时,我将被导航远离新页面,通常不应该在任何地方导航我。

当我离开控制器以确保它不会影响下一个视图时,如何取消所有承诺或终止控制器的所有异步功能?或者有更好的方法来处理这个问题吗?

1 个答案:

答案 0 :(得分:0)

不,您无法取消已启动的请求。您应该找到解决问题的另一种方法,例如,您可以使用ng-disable禁用处理路径的按钮,直到您的承诺被拒绝或解决。